1

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

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

4

2 回答 2

3

如果你只想要两列,这很容易做到;

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

一个用于测试的 SQLfiddle

...或者更冗长的标准 SQL;

于 2013-07-28T21:20:05.417 回答
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

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

于 2013-07-28T21:29:12.397 回答