Задать вопрос
Ответы пользователя по тегу SQL
  • Как вывести точки которые попали в интервал?

    Я бы сделал справочник, с необходимыми интервалами времени (допустим сутки, разбитые по 1 часу), назовем calendar, и сделал JOIN, с вот таким ограничением:
    calendar.MyHour between "время начала сессии" and "время конца сессии".
    Тем самым, каждую строку исходной таблицы мы множим на количество временных интервалов, которые она охватывает.
    Сразу вижу еще 1 место для проработки, если временной интервал охватывает несколько дней, то нужен второй справочник, с днями, у меня такой называется DAYS, где список дат (в прошлое и будущее) с кучей полезной информации по календарю, работаем с ним аналогичным образом.

    Если что-то непонятно объяснил, могу подробнее...
    Ответ написан
  • Как исправить ошибку в MSSQL запросе?

    Я бы конструкцию in заменил бы на прямой join (INNER JOIN), вот и всё.
    вот так:
    select @g_count = count(*) 
    from Award 
    
    /*Конструкцию in перенес вот сюда*/
    join (
    	select awrs_reqawrdtempid, awrs_discipline 
    	from awardrestriction 
    	where (awrs_competitionid = @competitionid or awrs_eventid = @eventid)
    	and awrs_persontype = 'Judge' and awrs_deleted is null
    ) r on Award.awrd_awardtempid=r.awrs_reqawrdtempid 
    	and Award.awrd_discipline=r.awrs_discipline
    
    where awrd_personid = @personid
    and awrd_deleted is null
    and awrd_notinuse is null
    --and (awrd_awardtempid, awrd_discipline) in
    Ответ написан
    Комментировать