SQL Group By更新

时间:2017-04-03 19:11:09

标签: sql sql-server

我需要使用我的quotemodifiers表中ComContribPct的总和来更新我的报价表中的ComContribPct。我的报价表中列出的每个报价基本上都有一笔款项。怎么做 ?现在sql在我的查询的底线抱怨我的Group By。 - 杰森

UPDATE q
SET q.ComContribPct= SUM(ISNULL(qm.ComContribPct,0)) 
FROM Quote q INNER JOIN QuoteModifiers qm ON q.QuoteNum=qm.QuoteNum
GROUP BY qm.QuoteNum

SQL给我

  

第15行,第15行,第1行,第17行   关键字' GROUP'

附近的语法不正确

2 个答案:

答案 0 :(得分:0)

您的查询等同于此(并且您没有更新底部的分组问题)

UPDATE q
set  q.ComContribPct = t.my_sum
from Quote q inner join (
    select QuoteNum, SUM(ISNULL(ComContribPct,0)) as  my_sum 
    from QuoteModifiers
    group by QuoteNum
) t on q.QuoteNum=t.QuoteNum

答案 1 :(得分:0)

您可以在子查询中执行聚合,然后将其加入以进行更新:

update q
set q.ComContribPct = qm.ComContribPct
from Quote q
inner join (
    select QuoteNum,
        SUM(coalesce(ComContribPct, 0)) as ComContribPct
    from QuoteModifiers
    group by QuoteNum
    ) qm on q.QuoteNum = qm.QuoteNum