我正在努力使用 T-SQL Query (SQL SERVER 2008) 来解决以下问题:
Ky ProductID Start # End # Diff
1 100 10 12 0
2 100 14 20 2 (14 - 12)
3 100 21 25 1 (21 - 20)
4 100 30 33 5 (30 - 25)
1 110 6 16 0
2 110 20 21 4 (20 - 16)
3 110 22 38 1 (22 - 21)
如您所见,我需要两个不同行和两列中的值之间的差异。
我试过了
with t1
( select ROW_NUMBER() OVER (PARTITION by ProductID ORDER BY ProductID, Start# ) as KY
, productid
, start#
, end#
from mytable)
和
select DATEDIFF(ss, T2.complete_dm, T1.start_dm)
, <Keeping it simple not including all the columns which I selected..>
FROM T1 as T2
RIGHT OUTER JOIN T1 on T2.Ky + 1 = T1.KY
and T1.ProductID = T2.ProductID
上述查询的问题是当 productID 从 100 更改为 110 时,它仍然计算差异。
非常感谢修改查询或任何更简单的解决方案的任何帮助。
谢谢