我在SQL Server中有一个表,列返回PID和Val1我试图添加某些每个PID的2个和列。
ValTotal
列应该是每个Val与PID
的总和。
例如,在下面的选择中,您可以看到Val1Total
和Val2Total
是SUM
和Val1
的{{1}} Val2
的1。
PID
我在网上搜索过,无法找到我要找的东西,这是我能做的事吗?
任何帮助或建议都将不胜感激,谢谢你。
答案 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