美好的一天。
下面是与我试图实现的目标相关的图像。
在一个表中有两个字段,一个是ID,一个是Type。
我认为一张图片描绘了千言万语,所以请查看以下内容
我尝试过一些关于案例和其他事情的事情,但都没有用。
有几点需要注意:由于某些限制,我们无法使用临时表,插入或删除。
数据样本:
ID Type
3 bad
2 zeal
4 tro
3 pol
2 tro
2 lata
4 wrong
3 dead
2 wrong
3 dead
4 wrong
3 lata
2 bad
2 zeal
答案 0 :(得分:3)
首先,您需要一个包含类型组的表:
type typegroup bad 1 tro 1 zeal 1 dead 2 lata 2 wrong 2 pol 3
然后加入,按类型分组,以便为每个类型组获取一个结果行并计数。
select
tg.typegroup,
count(case when id = 2 then 1 end) as id2,
count(case when id = 3 then 1 end) as id3
count(case when id = 4 then 1 end) as id4
from typegroups tg
join mytable m on m.type = tg.type
group by tg.typegroup
order by tg.typegroup;
更新:当然,您可以即时创建此类表格。
...
from
(
select 'bad' as type, 1 as typegroup
union all
select 'tro' as type, 1 as typegroup
union all
...
) tg
join mytable m on m.type = tg.type
...
如果您愿意,可以将其移至WITH子句。