循环,啥事都解决了。
这么奇怪的需求别指望一句SQL搞定了。
DECLARE @t TABLE(id INT,NAME VARCHAR(10),csValues INT);
INSERT INTO @t (id,name,csValues) VALUES (1,'张三',1),(2,'张三',2),(3,'李四',3),(4,'李四',4),(5,'李四',6)
;WITH cte AS (
SELECT rn=ROW_NUMBER() OVER(PARTITION BY name ORDER BY id desc),* FROM @t
)
SELECT b.name,a.csValues-b.csValues AS csValues FROM cte a JOIN cte b ON a.name=b.name AND a.rn=b.rn-1 ORDER BY a.id
/*
name csValues
---------- -----------
张三 1
李四 1
李四 2
*/
先行转列,再字段相减