SQL:案例里面的一个案例计数器也许?

时间:2016-01-22 12:26:35

标签: sql sql-server

美好的一天。

下面是与我试图实现的目标相关的图像。

在一个表中有两个字段,一个是ID,一个是Type。

我认为一张图片描绘了千言万语,所以请查看以下内容

我尝试过一些关于案例和其他事情的事情,但都没有用。

有几点需要注意:由于某些限制,我们无法使用临时表,插入或删除。

Because using CTRL + K does not work in this situation

数据样本:

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

1 个答案:

答案 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子句。