次の問題に対してT-SQLクエリ(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)
ご覧のとおり、2 つの異なる行と 2 つの列の値の違いが必要です。
私は試した
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 に変更されても差が計算されることです。
クエリまたはより簡単なソリューションを変更する際の助けをいただければ幸いです。
ありがとう