如何在sql中的某些字段上进行分组

时间:2014-05-30 04:00:02

标签: sql group-by

我有以下查询

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

1 个答案:

答案 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

注意,如果每组有多个不同的非空值,则会将它们全部加到一个最大组中。