使用加入更新状态内容
问题描述:
我遇到了我的查询问题。我正在尝试更新退出表中的“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)
我收到以下错误:! “消息512,级别16,状态1,2号线 子查询返回的多个值这不是当子查询遵循=,=,<许可, < =,>,> =或者当子查询用作表达式时 该语句已被终止。“
不确定为什么子查询返回多个结果。在此先感谢您的帮助。
答
你错过了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)
答
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