我想要一个没有函数或过程的解决方案(权限问题(。
我有一张这样的桌子:
其中k=列数(实际上:k=500(
col1 col2 col3 col4 col5.... col(k)
10 20 30 -50 60 100
我需要创建一个这样的累计行:
col1 col2 col3 col4 col5 ... col(k)
10 30 60 10 70 X
在Excel中,制作一个forumla并拖动它是一件简单的事情,但在sql中,如果我有很多列,手动添加似乎是一项非常笨拙的工作(col1作为col1,col1+col2作为col2,col1+col2+col3作为col3直到colk等(。
有没有办法找到解决这个问题的好办法?
您说您已经将数据模型更改为行。假设新表有三列:
- grp(一些组键,用于标识哪些行属于一起,即旧表中的一行是什么(
- pos(从1到500的位置号,表示值的顺序(
- 价值
使用SUM OVER
:获得累积和
select grp, pos, value, sum(value) over (partition by grp order by pos) as running_total
from mytable
order by grp, pos;
如果这个"colk"将在许多报告中需要/使用,我建议您创建一个计算列或视图,以使用k=cola+colb+对所有列求和。。。
sql中没有函数来汇总列(例如colA和colJ之间(