我有一张这样的表:
id type other_fields
1 a 1232
1 b 12
1 a 4324
2 c 4343
2 b 12
2 a 43545
我想聚合它,以便每行对应一个id 并为每个可能的类型值添加一列,每行包含相应的计数:
id tyep_a type_b type_c
1 2 1 0
2 1 1 1
有没有办法在简单的SQL查询中创建它而无需实际枚举所有可能的值?
答案 0 :(得分:0)
您可以将 CASE
与汇总功能 SUM
表达一起使用。
<强>查询强>
select id,
sum(case type when 'a' then 1 else 0 end) as type_a,
sum(case type when 'b' then 1 else 0 end) as type_b,
sum(case type when 'c' then 1 else 0 end) as type_c
from your_table_name
group by id;
无论RDBMS
如何,这都可能有效。但是最好提到你正在使用的RDBMS
。所以,我们可以让它变得动态。