总结sql

时间:2018-07-25 07:15:50

标签: sql sql-server-2012 sum

我要的是没有功能或过程的解决方案(权限问题)。

我有一张这样的桌子:

其中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中,创建论坛并拖动它很简单,但是在sql中,如果我有很多列,手动添加(col1为col1,col1 + col2为col2,col1 + col2)似乎非常笨拙。 + col3作为col3直到colk等)。

有什么办法找到解决这个问题的好方法吗?

2 个答案:

答案 0 :(得分:0)

如果很多报告中将需要/使用此“ colk”,我建议您创建一个计算列或一个视图,以使用k = cola + colb + ...对所有列求和。

sql中没有用于汇总列的功能(例如colA和colJ之间)

答案 1 :(得分:0)

您说您已将数据模型更改为行。因此,假设新表格包含三列:

  • 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;