使用内部联接和聚合函数更新列
Update Column Using Inner Join and Aggregate Function
我有一个 table,我需要使用另一个 table 的指定值的总和来更新它。需要更新的 table 名为 EngTasks,其字段名为 RunStatus。 RunStatus 可以保存 3 个值:
- 1 = 未开始
- 2 = 进行中
- 3 = 完成
我需要查看的 table 名为 EngTaskLog,它包含一个名为 HoursApplied 的字段 和名为 EngTaskID 的外键。对于每条记录,我需要查看 EngTaskLog 中的所有记录并汇总所有 HoursApplied 其中 EngTaskID = 需要更新的 EngTasks 记录的 ID。
我一时兴起尝试了以下查询,但出现错误:
UPDATE EngTasks
SET EngTasks.RunStatus = 1
FROM EngTasks ET
INNER JOIN
EngTaskLog ETL
ON
SUM(ETL.HoursApplied) = 0
我没有太多的查询经验,所以上面的代码对于更有经验的人来说可能看起来很荒谬。
希望以上内容有意义,感谢您抽出时间提供帮助。
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
我有一个 table,我需要使用另一个 table 的指定值的总和来更新它。需要更新的 table 名为 EngTasks,其字段名为 RunStatus。 RunStatus 可以保存 3 个值:
- 1 = 未开始
- 2 = 进行中
- 3 = 完成
我需要查看的 table 名为 EngTaskLog,它包含一个名为 HoursApplied 的字段 和名为 EngTaskID 的外键。对于每条记录,我需要查看 EngTaskLog 中的所有记录并汇总所有 HoursApplied 其中 EngTaskID = 需要更新的 EngTasks 记录的 ID。
我一时兴起尝试了以下查询,但出现错误:
UPDATE EngTasks
SET EngTasks.RunStatus = 1
FROM EngTasks ET
INNER JOIN
EngTaskLog ETL
ON
SUM(ETL.HoursApplied) = 0
我没有太多的查询经验,所以上面的代码对于更有经验的人来说可能看起来很荒谬。
希望以上内容有意义,感谢您抽出时间提供帮助。
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