我的查询遇到问题。我正在尝试更新列" weighted_avg_2004"在一张退出的表格中。我想将该列设置为两个值的乘积,一列在avg_2004列中,另一列在year_2004列中(这两列在不同的表中)。
Update #WeightedPercentChange
Set weighted_avg_2004 = (SELECT a.avg_2004 * b.year_2004
FROM #Average_PercentChange a
LEFT JOIN dbo.AnnualWeights b
ON a.SIZE = b.size)
我收到以下错误: " Msg 512,Level 16,State 1,Line 2 子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 该声明已被终止。"
不确定为什么子查询返回多个结果。在此先感谢您的帮助。
答案 0 :(得分:0)
您错过了SUM
:
Update #WeightedPercentChange
Set weighted_avg_2004 = (SELECT SUM(a.avg_2004 * b.year_2004) / SUM(b.year_2004)
FROM #Average_PercentChange a
LEFT JOIN dbo.AnnualWeights b
ON a.SIZE = b.size)
答案 1 :(得分:0)
UPDATE a
SET a.weighted_avg_2004 = (a.avg_2004 * b.year_2004)
FROM [#WeightedPercentChange] a LEFT JOIN dbo.AnnualsWeights b ON a.SIZE = b.size