0

我有类似的情况:Sql - count into multiple columns

我会在这里再次分解

我有一个包含这些值的表:

 num | type
-----+------
 123 | 3
 123 | 2
 123 | 3
 123 | 2
 124 | 3
 124 | 1
 124 | 3
 124 | 3

我想按num列分组,并有一列计算每种不同的类型。所以我会得到:

 num | 1 | 2 | 3
-----+---+---+---
 123 | 0 | 2 | 2
 124 | 1 | 0 | 3

该问题的最佳解决方案是:

SELECT `num`,
    SUM(type = 1) as `1`, 
    SUM(type = 2) as `2`, 
    SUM(type = 3) as `3`
FROM `your_table`
GROUP BY `num`

当我尝试这个时,我收到一条错误消息

在“LECT NUM, SUM(type”) 之后发现了意外的标记“=”。预期的标记可能包括:“CONCAT”。SQLSTATE=42601

有人可以指出我对 db2 的可行 sql 查询吗?

4

1 回答 1

1

另一个答案中的语法适用于 MySQL,您应该尝试以下使用该CASE语法的方法:

select num,
  sum(case when type = 1 then 1 else 0 end) Type1,
  sum(case when type = 2 then 1 else 0 end) Type2,
  sum(case when type = 3 then 1 else 0 end) Type3
from yourtable
group by num

请参阅SQL Fiddle with Demo(SQL Server 演示)

于 2013-02-21T20:47:41.607 回答