2015-02-24 55 views
1

我需要幫助在SQL Server 2012中編寫查詢以獲取以下數據。數據按日期排序。當列值發生變化時遞增行號

Person  DEVICE DATE 
------  --- 
person1 D1  1/1/2015 
person1 D1  5/1/2015 
person1 D2  6/1/2015 
person1 D2  10/1/2015 
person1 D1  11/1/2015 
person1 D1  16/1/2015 
person1 D2  17/1/2015 
person1 D2  20/1/2015 

我需要一個GN列,只要DEVICE值發生變化就會增加。我的結果應該如下所示

 
GN  Person DEVICE  DATE 
---  ------  -----  ------- 
1  person1 D1   1/1/2015  
1  person1 D1   5/1/2015    
2  person1 D2   6/1/2015    
2  person1 D2   10/1/2015    
3  person1 D1   11/1/2015    
3  person1 D1   16/1/2015    
4  person1 D2   17/1/2015    
4  person1 D2   20/1/2015 

回答

2

這可以通過在case語句中使用lag函數來完成。滯後函數將允許您將當前行值與其前一個值進行比較。

https://msdn.microsoft.com/en-us/library/hh231256.aspx

+0

我想指出,你也可以使用OVER子句,如果你有一個2012預覽版。 https://msdn.microsoft.com/en-us/library/ms189461.aspx – sovemp 2015-02-24 21:16:43

相關問題