SQLServer的Lead和Lag实现

在这里不谈2012版本,因为那版本好像有了lead,lag函数,不过没试过。这里主要讲怎么自己实现

1、有表A如下数据

insert into A(id,name) values(1,'张三')
insert into A(id,name) values(2,'李四')
insert into A(id,name) values(3,'王五')

2、SQL如下

SELECT * FROM 
(SELECT A.*,row_number() OVER(order by id) r  FROM A) k
,(SELECT A.*,row_number() OVER(order by id) r FROM A) B 
WHERE k.R=B.R-1

另外就是R=R+1

你可能感兴趣的:(sqlserver,lead,lag)