我有一张桌子

Col1   Col2   Col3
A1     1      null
A1     2      null
B1     5      null
B2     6      null
M1     1      M
M2     2      M
M3     3      M
J1     1      J
J2     2      J

我想总结基于Col1的Col2。查询将如下所示,
select Col1, sum (Col2)
group by Col1

但是,如果Col3具有相同的字母,我想对所有Col1求和Col2。所以结果表应该像
Col1    Col2
A1      3
B1      5
B2      6
M1      6
M2      6
M3      6
J1      3
J2      3

如何更改查询以使其高于表格?

最佳答案

评论后编辑/更新为问题。我不知道一个聪明的方法,但似乎其他人也有。

select * from (
select Col1, SUM(Col2) Col2
from Table
where Col3 is null
group by Col1

union

select mainset.Col1, tmp.Col2
from Table mainset
join
(
    select Col3, SUM(Col2) Col2
    from Table
    where Col3 is not null
    group by Col3
) tmp on tmp.Col3 = mainset.Col3

where mainset.Col3 is not null
) fullset
order by fullset.Col1

关于sql-server - 如何有条件地求和?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15302054/

10-15 21:18