Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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
TSQL-按类型分组_Sql_Sql Server_Tsql_Group By - Fatal编程技术网

TSQL-按类型分组

TSQL-按类型分组,sql,sql-server,tsql,group-by,Sql,Sql Server,Tsql,Group By,我的表有两列: ID, TypeID 每个ID可以有多个TypeID。在查询结果中,我希望具有以下内容: ID, Count(TypeID = 10), Count(TypeID = 20 or 30), Count(TypeID 40 and 50) 查询本身应该尽可能快/高效。任何人都能帮上忙吗?试试这个: SELECT ID, SUM(CASE WHEN TypeID = 10 THEN 1 ELSE 0 END) "Count of 10", SUM(CASE WHEN

我的表有两列:

ID, TypeID

每个ID可以有多个TypeID。在查询结果中,我希望具有以下内容:

ID, Count(TypeID = 10), Count(TypeID = 20 or 30), Count(TypeID 40 and 50)
查询本身应该尽可能快/高效。任何人都能帮上忙吗?

试试这个:

SELECT 
  ID,
  SUM(CASE WHEN TypeID = 10 THEN 1 ELSE 0 END) "Count of 10",
  SUM(CASE WHEN TypeID IN (20, 30) THEN 1 ELSE 0 END) "Count of 30 or 20",
  SUM(CASE WHEN TypeID IN (40, 50) THEN 1 ELSE 0 END) "Count of 40 AND 50"
FROM Table
GROUP BY ID;
对于最后一种情况:
Count(TypeID 40和50)
我认为(40,50)中的谓词
TypeID将对您有效,因为它将给出值40和50的计数

试试这个:

SELECT 
  ID,
  SUM(CASE WHEN TypeID = 10 THEN 1 ELSE 0 END) "Count of 10",
  SUM(CASE WHEN TypeID IN (20, 30) THEN 1 ELSE 0 END) "Count of 30 or 20",
  SUM(CASE WHEN TypeID IN (40, 50) THEN 1 ELSE 0 END) "Count of 40 AND 50"
FROM Table
GROUP BY ID;
对于最后一种情况:
Count(TypeID 40和50)
我认为(40,50)
中的谓词
TypeID将对您有效,因为它将给出值40和50的计数


不清楚您想做什么,请使用表中的当前数据编辑您的帖子,然后编辑所需的结果。每个ID可以有多个TypeID?你能发一份数据样本吗?我认为您的数据库中可能出现了爆炸。不清楚您试图做什么,请使用表中的当前数据编辑您的帖子,然后编辑所需的结果。每个ID可以有多个TypeID?你能发一份数据样本吗?我想你的数据库中可能发生了爆炸。很好地利用聚合来提高速度+woot。很好地利用骨料提高速度+胡特。