我有以下查询
select a,b,sum(c) from(
select a,b,c from table 1
union
select a,b,c from table 2
)
group by a,b
上面的sql结果如下:
A B C
Apple Red 100
Apple null 100
Pear Green 200
Pear null 300
而不是上面的结果我怎样才能得到以下结果:
A B C
Apple Red 200
Pear Green 500
答案 0 :(得分:0)
根据您的预期结果,您希望GROUP BY
第一列(A
),并为第二列(B
)设置一个值。您可以在第二列上使用其他聚合,例如max
,并将其从GROUP BY
中删除:
select a,max(b),sum(c) from(
select a,b,c from table1
union
select a,b,c from table2
) t
group by a
注意,如果每组有多个不同的非空值,则会将它们全部加到一个最大组中。