SQL选择具有多行值的列的总和

时间:2016-05-05 15:41:28

标签: sql sql-server sum

我在SQL Server中有一个表,列返回PID和Val1我试图添加某些每个PID的2个和列。

ValTotal列应该是每个Val与PID的总和。

例如,在下面的选择中,您可以看到Val1TotalVal2TotalSUMVal1的{​​{1}} Val2的1。

PID

我在网上搜索过,无法找到我要找的东西,这是我能做的事吗?

任何帮助或建议都将不胜感激,谢谢你。

2 个答案:

答案 0 :(得分:2)

也许您只是在寻找窗口功能:

select pid, val1, val2,
       sum(val1) over (partition by pid) as val1total,
       sum(val2) over (partition by pid) as val2total
from t;

答案 1 :(得分:0)

您可以使用SQL中的OLAP函数(窗口函数)来实现。但我不确定MySQL是否支持它们。检查Mysql是否支持SUM() OVER(PARTITION BY ... ORDER BY ...)

如果没有,你可以在同一个表上使用连接来实现。示例代码如下:

select  A.PID,
    A.Val1,
    A.Val2,
    B.Val1Total,
    B.Val2Total,
From    Table A
Inner Join (Select PID, sum(Val1) as Val1Total, sum(Val2) as Val2Total
        From Table) B
on A.PID = B.PID