我有一个表需要使用另一个表中指定值的总和进行更新。需要更新的表格称为 EngTasks ,其中包含名为 RunStatus 的字段。 RunStatus 可以包含3个值:
我需要查看的表名为 EngTaskLog ,它包含一个名为 HoursApplied 的字段和一个名为 EngTaskID的外键。对于每条记录,我需要查看 EngTaskLog 中的所有记录,并总计所有 HoursApplied ,其中 EngTaskID = ID需要更新的 EngTasks 记录。
我一时兴起尝试了以下查询,但收到了错误:
UPDATE EngTasks
SET EngTasks.RunStatus = 1
FROM EngTasks ET
INNER JOIN
EngTaskLog ETL
ON
SUM(ETL.HoursApplied) = 0
我对查询没有太多经验,因此上述代码对于有更多经验的人来说可能看起来很荒谬。
我希望上述内容有道理,感谢您的时间和帮助。
答案 0 :(得分:1)
UPDATE ET
SET ET.RunStatus = 1
FROM EngTasks ET
INNER JOIN (
SELECT ETL.EngTaskID, SUM(ETL.HoursApplied) s
FROM EngTasks ET
INNER JOIN EngTaskLog ETL ON ET.ID = ETL.EngTaskID
GROUP BY ETL.EngTaskID
HAVING SUM(ETL.HoursApplied) = 0 ) x ON ET.ID = x.EngTaskID