2014-02-20 43 views
0

我想計算在sequence1行的差值之間。例如,如果存在rn和一個低位行(行號4和5),那麼將進行計算。減去SQL Server中的順序行ID

你能給我一些關於這方面的想法嗎?

SS

回答

1

您可以用CTE(假設SQL 2005+)和ROW_NUMBER()做到這一點:

;With Rows 
As 
(
    Select *, ROW_NUMBER() OVER (ORDER BY (SELECT 0)) As RowNum 
    From Lag 
) 
Select R1.LagValue, R1.Value, R1.rn, R1.rn - IsNull(R2.rn, 0) As Difference 
From Rows R1 
Left Join Rows R2 On R1.RowNum = R2.RowNum + 1 
+0

謝謝thepirat00。此查詢適用於我。 – juniorDev

0

看看LAG。它是這樣的:

select [value] - lag([value], 1, 0) 
    over (partition by [LagValue] order by [rn] desc) 
from your_table