您将如何从表中变换列:
- 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