Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 列的值更改时增加行数_Sql_Sql Server_Tsql_Sql Server 2012 - Fatal编程技术网

Sql 列的值更改时增加行数

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

我需要帮助在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列,它在设备值更改时递增。我的结果如下所示

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子句。