列的值更改时增加行号

时间:2015-02-24 20:50:05

标签: sql sql-server tsql sql-server-2012

我需要帮助在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

1 个答案:

答案 0 :(得分:1)

这可以通过在case语句中使用lag函数来完成。滞后函数允许您将当前行值与其前一行进行比较。

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