Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:一个案例中的计数一个案例中的计数?_Sql_Sql Server - Fatal编程技术网

SQL:一个案例中的计数一个案例中的计数?

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,一个是类型

我想一幅画能画上千言万语,所以请检查下面的内容

我试过一些关于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
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
...