求和sql中的相邻列



我想要一个没有函数或过程的解决方案(权限问题(。

我有一张这样的桌子:

其中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之间(

最新更新