使用Join with update语句

时间:2015-02-10 20:30:50

标签: sql-server left-join

我的查询遇到问题。我正在尝试更新列" 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。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 该声明已被终止。"

不确定为什么子查询返回多个结果。在此先感谢您的帮助。

2 个答案:

答案 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