我遇到类似这样的情况: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(类型”)后面找到意外的标记“=”。预期的标记可能包括:“CONCAT”.SQLSTATE = 42601
有人能指出我对db2的可行sql查询吗?
答案 0 :(得分: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演示)