【发布时间】:2019-02-01 15:16:17
【问题描述】:
我正在尝试使用子查询更新表tbl_prev_data 中的两个字段,因为我必须使用聚合SUM。但是我不知道为什么会这样说
't' 附近的语法不正确`
其中t 是一个保存子查询结果的临时变量。我错过了什么吗?以下是我的查询。
UPDATE tbl_prev_data
SET Original_Value = t.Original_Value
SET Pre_Val = t.PreWDV
FROM tbl_prev_data
INNER JOIN
(SELECT
Asset_Group_Code,
ISNULL(SUM(Original_Value),0) AS 'Original_Value',
ISNULL(SUM(Prev_Val),0) AS 'PreWDV'
FROM
tbl_Asset_Master
GROUP BY
Asset_Group_Code, DOP
HAVING
(YEAR(DOP) != YEAR(GETDATE()) AND MONTH (DOP) > 3) t ON tbl_prev_data.Asset_Group_Code = t.Asset_Group_Code
【问题讨论】:
-
AND MONTH (DOP) > 3) 之后缺少一个括号,该括号在 select 之前开始
-
@Jens,谢谢。我真的没有注意到。这是一个真正的救生员。谢谢:)
-
由于您没有在 aggregated 列上使用条件,因此您应该使用
WHERE而不是HAVING
标签: sql sql-server-2008 sql-update subquery inner-join