这个更新查询在有连接时如何设置总和

Dan*_*sch 3 sql sql-server aggregate

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
Run Code Online (Sandbox Code Playgroud)

我有上面的查询,我想知道像上面的查询一样获取总和并设置它还是每个特定的总和并设置它?

我还想知道它是否获得总和并将每个设置为总和,我如何获取每个单独项目的总和,然后将其设置为该总和?

Gor*_*off 5

它没有。试试这个查询——它是完全安全的,因为它返回一个错误。 UPDATEs 不是聚合,所以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;
Run Code Online (Sandbox Code Playgroud)

注意IsHazardous可能属于子查询。你的问题不清楚。