UPDATE
Chemicals.dbo.ChmProductCompositions
SET Vhap = SUM(PercentOfProduct)
FROM
Chemicals.dbo.ChmProductCompositions PC
JOIN Chemicals.dbo.ChmCompositionChemicals CC ON CC.ProductCompositionID = pc.ProductCompositionID
JOIN Chemicals.dbo.ChmChemicals C ON C.ChemicalID = CC.ChemicalID
WHERE IsHazardous = 1
我有上面的查询,我想知道类似上面的查询是获取总和并设置它还是每个特定的总和并设置它?
我还想知道它是否获取总和并将每一项都设置为总和我如何才能获取每个单独项目的总和然后将其设置为总和?
最佳答案
事实并非如此。只需尝试查询——它是完全安全的,因为它会返回一个错误。 UPDATE
不是聚合,因此不允许 SUM()
。
您需要在加入之前聚合:
UPDATE pc
SET Vhap = cc.PercentOfProduct
FROM Chemicals.dbo.ChmProductCompositions pc JOIN
(SELECT cc.ProductCompositionID, SUM(PercentOfProduct) as PercentOfProcue
FROM Chemicals.dbo.ChmCompositionChemicals CC JOIN
Chemicals.dbo.ChmChemicals C
ON C.ChemicalID = CC.ChemicalID
GROUP BY cc.ProductCompositionID
) cc
ON CC.ProductCompositionID = pc.ProductCompositionID
WHERE IsHazardous = 1;
请注意,IsHazardous
可能属于子查询。你的问题不清楚。
关于sql - 此更新查询在有连接时如何设置总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68038450/