更新Sum GroupBy

时间:2016-10-08 11:40:45

标签: sql group-by access-vba sum

表格数:1

Col1  Col2  Col3  Total
+10     0   Prod1 
0     -10   Prod1
0     -20   Prod2
+20    0    Prod2

我想要 -

Col1  Col2  Col3  Total
+10     0   Prod1  0
0     -10   Prod1  0
0     -20   Prod2  0
+20    0    Prod2  0

我想总结col1&共列Col3中Col3中相同产品的col2。 我如何实现这一目标?

DoCmd.RunSQL“UPDATE Table1 SET Table1.Total =(从Table1 Group By Table1.Col3中选择Sum(Table1.Total))”

请注意我不只是在这里添加2列。它相当于我瞄准的Excel的SumIf。

2 个答案:

答案 0 :(得分:1)

您的查询可能如下所示:

Select coalesce(Sum(Table1.Col1),0) + Coalesce(Sum(Table1.Col2),0)
   from Table1 
   Group By Table1.Col3  

使用coalesce,我们确保sum中的一个不会null

update部分:

UPDATE Table1 t1 SET t1.Total = (
    Select coalesce(Sum(t2.Col1),0) + Coalesce(Sum(t2.Col2),0)
       from Table1 t2 
       where t2.Col3=t1.Col3
       Group By t2.Col3 
    )

答案 1 :(得分:1)

一种方法使用相关子查询:

select col1, col2, col3,
       (select sum(tt1.col1) + sum(tt1.col2)
        from table1 as tt1
        where tt1.col3 = t1.col3
       ) as Total
from table1 as t1;

如果你想以update的方式做到这一点,那就是同样的想法:

update table1
    set Total = (select sum(tt1.col1) + sum(tt1.col2)
                 from table1 as tt1
                 where tt1.col3 = table1.col3
                );