Mysql:按多个字段对数据进行分组

时间:2014-03-25 06:10:27

标签: mysql group-by case

我有一个像这样的mysql表

id       criteria1    criteria2   amount
1           'a'          'b'         100
2           'a'          'c'          20
3           'd'          'b'          30

我需要按查询编写一个组,以便我的最终输出应该是

criteriaMatch      sum(amount)
criteria2 = b         130
criteria1 = a         120

id为1的数据在两种情况下都重叠。

我如何实现这一目标?

我尝试使用mysql案例。但是在第一个标准匹配的情况下,数据会跳过第二个条件而我得不到预期的结果。

1 个答案:

答案 0 :(得分:3)

您可以创建2个单独的查询,第一个仅按标准1进行分组,第二个仅按标准2进行分组,并在每个查询中使用适当的过滤器。所以,像这样:

select criteria1 'Criteria',sum(amt)
from yourtable
where (criteria1 = 'a')
group by criteria1
union
select criteria2 'Criteria',sum(amt)
from yourtable
where (criteria2 = 'b')
group by criteria2