MySQL查询组由多个和值组成

时间:2013-07-28 21:15:38

标签: mysql

如果您查看此SQL Fiddle,您会看到结果数据按年份和类型分组,这意味着每年有2行。我想只对年份进行分组,并在同一行显示A型和B型的总和。

有人可以告诉我如何修改此查询中的sum语句,以便第一个总和仅用于A类型,第二个总和用于B类型?感谢。

2 个答案:

答案 0 :(得分:2)

如果你只想要两列,那就很容易了;

SELECT Year, 
  SUM(CASE WHEN Type='A' THEN Amt ELSE 0 END) TypeA,
  SUM(CASE WHEN Type='B' THEN Amt ELSE 0 END) TypeB
FROM YourTable
GROUP BY Year

An SQLfiddle to test with

...或者更详细的标准SQL;

答案 1 :(得分:1)

这个怎么样:http://sqlfiddle.com/#!2/85415/11

SELECT
  SUM(IF(TYPE = 'A', Amt, 0)) AS A_amt,
  SUM(IF(TYPE = 'B', Amt, 0)) AS B_amt,
  YEAR,
  TYPE
FROM YourTable
GROUP BY YEAR

或者你可以使用标准SQL的CASE语句,但稍长一些,所以我选择了这个版本。