SQL Query获取某个状态的最大日期并从另一个状态的最大日期中减去该日期

时间:2015-09-08 19:01:14

标签: sql sql-server datetime metrics

一个例子是..假设一张票处于新状态。我想得到新状态的MAX日期和完成状态的最大日期,并计算MAX新状态与MAX新状态之间的差异

离。

SELECT t.ID,
       MAX(update_date) WHERE t.status = 'New' start_time,
       MAX(update_date) WHERE t.status = 'Completed' stop_time,
DATEDIFF(second, MAX(update_date), MAX(update_date)) elapsed_sec
FROM xxx.dbo t
GROUP BY t.ID;

非常感谢你,

P

2 个答案:

答案 0 :(得分:1)

Session["User ID"] = USER_ID;

答案 1 :(得分:1)

我建议使用条件聚合而不是相关子查询来执行此操作:

SELECT t.ID,
       MAX(CASE WHEN t.status = 'New' THEN update_date END) as start_time,
       MAX(CASE WHEN t.status = 'Completed' THEN update_date END) as stop_time,
       MAX(update_date) WHERE t.status = 'Completed' stop_time,
       DATEDIFF(second,
                MAX(CASE WHEN t.status = 'New' THEN update_date END),
                MAX(CASE WHEN t.status = 'Completed' THEN update_date END)
               ) as elapsed_sec
FROM xxx.dbo t
GROUP BY t.ID;