微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 累积前一行的当前行和的值

您将如何从表中变换列:
ColumnA   ColumnB
2           a
3           b
4           c
5           d
1           a

到这个:

ColumnA          ColumnB
3                 a
6(=3+3)           b   
10(=4+3+3)        c   
15(=5+4+3+3)      d

我有兴趣看到esp.你会选择什么方法

解决方法

喜欢这个:
;WITH cte
AS
(
   SELECT ColumnB,SUM(ColumnA) asum 
   FROM @t 
   gROUP BY ColumnB

),cteranked AS
(
   SELECT asum,ColumnB,ROW_NUMBER() OVER(ORDER BY ColumnB) rownum
   FROM cte
) 
SELECT (SELECT SUM(asum) FROM cteranked c2 WHERE c2.rownum <= c1.rownum),ColumnB
FROM cteranked c1;

这应该给你:

ColumnA    ColumnB
3             a
6             b
10            c
15            d

这是a live demo

原文地址:https://www.jb51.cc/mssql/81381.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐