TSQL - 按类型分组

时间:2012-12-03 14:24:47

标签: sql sql-server tsql group-by

我有这个有2列的表:

ID, TypeID

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

ID, Count(TypeID = 10), Count(TypeID = 20 or 30), Count(TypeID 40 and 50)

查询本身应该尽可能快/高效。可以帮忙吗?

1 个答案:

答案 0 :(得分:6)

试试这个:

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 and 50)我认为谓词TypeID IN (40, 50)适合您,因为它会给出值40和50的计数。

SQL Fiddle Demo