Sql 如何根据列的唯一值对列进行分组,并根据其值将计数放入不同的列?

Sql 如何根据列的唯一值对列进行分组,并根据其值将计数放入不同的列?,sql,sql-server,Sql,Sql Server,我有一个分类表,如下所示 我想根据scStatusvalue及其计数组通过catID catID | 0 | 2 | 3 ----- |---|---|--- 2 | 1 | 0 | 1 3 | 1 | 1 | 0 4 | 2 | 0 | 1 5 | 0 | 1 | 0 我试过这样做,选择catID,按catID从tableName组中将(scStatus)计数为[count],按catID将scStatus排序,但我无法进入该值的列 `使用数据透视查询: S

我有一个分类表,如下所示

我想根据
scStatus
value及其计数组通过
catID

catID | 0 | 2 | 3
----- |---|---|---
 2    | 1 | 0 | 1
 3    | 1 | 1 | 0
 4    | 2 | 0 | 1
 5    | 0 | 1 | 0
我试过这样做,
选择catID,按catID从tableName组中将(scStatus)计数为[count],按catID将scStatus排序,但我无法进入该值的列

`使用数据透视查询:

SELECT catID,
       SUM(CASE WHEN scStatus = 0 THEN 1 ELSE 0 END) AS [0],
       SUM(CASE WHEN scStatus = 2 THEN 1 ELSE 0 END) AS [2],
       SUM(CASE WHEN scStatus = 3 THEN 1 ELSE 0 END) AS [3]
FROM Category
GROUP BY catID
使用透视查询:

SELECT catID,
       SUM(CASE WHEN scStatus = 0 THEN 1 ELSE 0 END) AS [0],
       SUM(CASE WHEN scStatus = 2 THEN 1 ELSE 0 END) AS [2],
       SUM(CASE WHEN scStatus = 3 THEN 1 ELSE 0 END) AS [3]
FROM Category
GROUP BY catID

枢轴操作员

select      *
from        (select catID,scStatusvalue from t) t
                pivot (count(scStatusvalue) for scStatusvalue in ([0],[2],[3])) t

枢轴操作员

select      *
from        (select catID,scStatusvalue from t) t
                pivot (count(scStatusvalue) for scStatusvalue in ([0],[2],[3])) t