Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос на поиск ближайшего значения к указанной дате  [new]
ret5
Member

Откуда:
Сообщений: 1
Прошу помочь с запросом. Пишу первый раз на форум, возможно получилось сумбурно, если что поправьте
У каждой задачи есть
дата начала, окончания задачи (start_date, stop_date)
исполнитель (executor)
трудоемкость(value)
дата ввода значения трудоемкости (create_value)
в реальности параметров задачи оч много, собранных из разных таблиц
select..
from
left join (select..
from)
....
left join(select..
from)
where create_value between @start_period ans @stop_period
результат запроса:
NumbeTask_namestart_taskend_taskexecutervaluecreate_value prevfactrez
123 test101.07.201801.09.2018 executer 10
123 test1 01.07.201801.09.2018executer1 1012.07.2018 00
123 test1 01.07.2018 01.09.2018 executer1 15 24.07.2018 100
1234 test2 10.07.2018 05.08.2018 executer2 40 20.07.2018 00
1234 test2 10.07.2018 05.08.2018 executer2 50 04.08.2018 400
12345 test3 28.07.2018 01.09.2018 executer3 20 23.08.201800
123456test4 1.08.2018. 10.08.2018 executer4 30 05.08.2018 200
123456 test4 1.08.2018 10.08.2018 executer4 35 09.08.2018 00

группирую, получаю по каждой задаче одну строку
group by task_number,task_name
order by task_number
использовала функцию LAG (cтолбец prevfact), но т.к. ограничиваю задачи определенным периодом времени, у первого введенного значения prevfact=0
В итоге по каждой задаче надо получить 1 строку, rez
1.для каждой задачи, которые начались в предыдущем периоде (type_task1, type_task2) найти разницу (rez) между ближайшем значением (максимальным) к stop period
и ближайшим значением (максимальным), введенным до start period, тем самым необходимо найти затраченную трудоемкость в заданном периоде.
2. для задач типа, которые начались в текущем периоде найти максимальное введенное значение max (value)

К сообщению приложен файл. Размер - 17Kb
6 дек 18, 12:54    [21755686]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на поиск ближайшего значения к указанной дате  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 5977
ret5,

я бы начал решение с формулировки требования, например, найти все значения ключей таблицы такой-то, для которых дистанция между датами такой-то группы не превышает такой-то порог или минимальна.

Составив требование и убедившись, что оно внутренне непротиворечиво, можно подумать - какими средствами его можно реализовать. пока что требование у Вас не слишком очевидно, Вы описываете только своё решение.
6 дек 18, 14:58    [21755884]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на поиск ближайшего значения к указанной дате  [new]
iiyama
Member

Откуда:
Сообщений: 557
ret5,
Не знаю правильно ли я понял, у вас value -это накопительный итог и для того, чтобы рассчитать нужное значение Вам нужны данные, которые вы исключили критерием в where
Если это так, то можно использовать OUTER APPLY в котором получить нужное Вам значение и вычесть его из MAX в Вашей выборке или же убрать критерий WHERE и получать значения в агрегатах через CASE, типа
MAX(CASE WHEN create_value<@start_period THEN value else 0 end) и MAX(CASE WHEN create_value<@end_period THEN value else 0 end)
6 дек 18, 15:20    [21755927]     Ответить | Цитировать Сообщить модератору
 Re: Запрос на поиск ближайшего значения к указанной дате  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 3719
ret5,

Изучите OUTER APPLY
6 дек 18, 15:42    [21755968]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить