Перетащите DATEDIFF между строками с определенным значением и предложением WHERE - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь сгенерировать DATEDIFF для расчета соблюдения SLA, но информация таблицы, которая мне нужна для выполнения DATEDIFF, реплицируется в строках (вместо столбца времени начала, столбца времени окончания).

В связи с этим мне нужно установить оператор WHERE для одного и того же столбца, используя 2 разных StatusIds для DATEDIFF этих двух временных отметок.

Например,

PackageId | StatusId | rowDateModified
--------------------------------------
1              1        2019-06-01 00:41
1              2        2019-06-01 01:30

В идеале мне нужно иметь возможность подсчитать, сколько времени прошло между созданием пакета (StatusId = 1) и завершением пакета (StatusId = 2) для бесконечного числа строк, где PackageId является отличимым.

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете использовать условное агрегирование:

select packageid,
       datediff(day,
                max(case when statusid = 1 then rowdatemodified end),
                max(case when statusid = 2 then rowdatemodified end)
               )
from t
group by packageid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...