繁体   English   中英

如何获得 2 行之间的日期差异(对于每个相同的组)? SQL

[英]How to get the difference in dates between 2 rows (for each same group)? SQL

嘿,我有这张桌子:

Case         Test      Result       CreationDate
--------------------------------------------------
00123         P        4.7         2022-05-22 10:45:00
00123         P      Cancelled     2022-05-22 09:46:00
00548         P        6.8         2022-05-22 09:45:00
00289         P        4.4         2022-04-12 17:34:00
00289         P                    2022-04-12 16:21:00
00118         P        4.3         2022-04-10 12:56:00
00118         P        4.2         2022-04-10 12:34:00

有时,当结果是“已取消”/NULL/Blank/whatever 时……他们会再次进行测试(有时即使结果正常,例如 00118)

我想知道每个案例的 CreationDate 之间的区别。

有时他们会做一个测试,所以只有一个案例,没关系:)

理想的输出(我不在乎差异将如何显示,只要它不是 nvarchar):

Case         Test      Result       CreationDate               Difference
---------------------------------------------------------------------------------
00123         P        4.7         2022-05-22 10:45:00         00:59:00 /59:00 /59 (I dont care how as long as I could do avarage later) 
00123         P      Cancelled     2022-05-22 09:46:00         NULL/ Blank
00548         P        6.8         2022-05-22 09:45:00         NULL/ Blank
00289         P        4.4         2022-04-12 17:34:00         01:13:00/ 01:13/ 73
00289         P                    2022-04-12 16:21:00         NULL/ Blank
00118         P        4.3         2022-04-10 12:56:00         00:22:00/ 00:22/ 22
00118         P        4.2         2022-04-10 12:34:00         NULL/ Blank

这是针对上述问题的 LAG 函数的简单版本。 您也可以使用 LEAD 函数来检索下一个日期。 注意要避免在 PreviousDate 列中使用 NULL,ISNULL 被使用,这只是为了确保我们有一些东西要返回并指示日期/时间相同的位置。

WITH CTETestValues AS (
SELECT 
[Case],
Test,
Result,
CreationDate,
ISNULL(LAG(CreationDate,1)OVER(PARTITION BY [Case] ORDER BY CreationDate),CreationDate) PreviousDate
FROM dbo.TestValues
)

SELECT 
[Case],
Test,
Result,
CreationDate,
PreviousDate,
DATEDIFF(second,PreviousDate,CreationDate) LapsedSeconds
FROM CTETestValues

希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM