SQL:一个案例中的计数一个案例中的计数?
大家好 下面是一幅关于我试图实现的目标的图片 在一个表中有两个字段,一个是ID,一个是类型 我想一幅画能画上千言万语,所以请检查下面的内容 我试过一些关于case和其他东西的方法,但都不管用 有几件事需要注意:由于某些限制,我们不能使用临时表、插入或删除 数据样本:SQL:一个案例中的计数一个案例中的计数?,sql,sql-server,Sql,Sql Server,大家好 下面是一幅关于我试图实现的目标的图片 在一个表中有两个字段,一个是ID,一个是类型 我想一幅画能画上千言万语,所以请检查下面的内容 我试过一些关于case和其他东西的方法,但都不管用 有几件事需要注意:由于某些限制,我们不能使用临时表、插入或删除 数据样本: 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
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
首先,您需要一个包含类型组的表: type typegroup bad 1 tro 1 zeal 1 dead 2 lata 2 wrong 2 pol 3 更新:当然,您可以动态创建这样的表
...
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子句。请提供您的查询。。。和小数据样本。@Devart,现在我放弃了我尝试的每个查询,我将附加一个数据样本。预期结果是什么?@papatoob你能看到屏幕截图吗?检查案例语法。你能想到在没有新表的情况下这样做吗?在这一点上,虽然你的答案看起来是最可行的。当然,请参阅我的更新。(当然你也可以在输入('bad','tro'…)时对case表达式
case进行分组,但在我看来这不太可读)。这种方法是否考虑了Koopa、Gumba和Toastool的第一个结果行中的不同类型组?@papatoob:是的,Koopa,秋葵和毒蕈只是ID 2、3和4的名称。只是其他列别名,而不是我的id2、id3和id4。@ThorstenKettner是的,我得到了这个,但是图像第一个结果行中的WHERE Type IN(…)
部分对于id2、id3和id4是不同的。它在各个列中包含不同的类型列表。但答案似乎再次被接受:)
...
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
...