Sql 列的值更改时增加行数
我需要帮助在SQL server 2012中为以下数据编写查询。数据按日期排序Sql 列的值更改时增加行数,sql,sql-server,tsql,sql-server-2012,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
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列,它在设备值更改时递增。我的结果如下所示
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
GN个人设备日期
--- ------ ----- -------
1人1 D1 1/1/2015
1人1 D1 5/1/2015
2人1 D2 6/1/2015
2人1 D2 2015年1月10日
3人1 D1 2015年11月1日
3人1 D1 2015年1月16日
4人1 D2 2015年1月17日
4人1 D2 20/1/2015
这可以通过在case语句中使用lag函数来实现。lag函数允许您将当前行值与其前一行值进行比较
我想指出,如果您有2012年之前的版本,您也可以使用OVER子句。