首页 新闻 搜索 专区 学院

sql分组求减法

0
悬赏园豆:10 [待解决问题]

如图所示的一张表,希望按name分组,对csvalues依次求减法

希望得到如下结果

name  csvalues

张三       1

李四        1

李四         2

maybe13的主页 maybe13 | 初学一级 | 园豆:177
提问于:2016-02-19 12:13
< >
分享
所有回答(3)
-1

循环,啥事都解决了。

这么奇怪的需求别指望一句SQL搞定了。

爱编程的大叔 | 园豆:30813 (高人七级) | 2016-02-19 12:20
0

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
*/

gw2010 | 园豆:1485 (小虾三级) | 2016-02-19 15:15
0

先行转列,再字段相减

Rich.T | 园豆:3440 (老鸟四级) | 2016-02-22 11:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册