【发布时间】:2014-07-27 14:23:36
【问题描述】:
我有一个包含 ID 列表的表格,每个 ID 的状态为 HW、HB、PIP 或 TBC。
我想计算每种状态的人数,所以我会有一个看起来像这样的表格
HW HB PIP 待定
45 27 9 49
我现在有
(SELECT COUNT(*) AS 'StatusHW' From HomeworkerStatus WHERE Status='Homeworker')
UNION
(SELECT COUNT(*) AS 'StatusHB' From HomeworkerStatus WHERE Status='Home Based')
UNION
(SELECT COUNT(*) AS 'StatusPIP' From HomeworkerStatus WHERE Status='PIP')
UNION
(SELECT COUNT(*) AS 'StatusTBC' From HomeworkerStatus WHERE Status='TBC')
这会返回
状态HW
1 45
2 27
3 9
4 49
我也试过
SELECT Status,
sum(case when Status = 'Homeworker' then 1 else 0 end) StatusHW,
sum(case when Status = 'Home Based' then 1 else 0 end) StatusHB,
sum(case when Status = 'PIP' then 1 else 0 end) StatusPIP,
sum(case when Status = 'TBC' then 1 else 0 end) StatusTBC
FROM HomeworkerStatus
GROUP BY Status
这将返回一个 4x4 表,其中包含第 1、2、3、4 行和列 Status、StatusHW、...、StatusTBC。这更接近我所追求的,但仍然不对。
任何帮助将不胜感激。
谢谢
【问题讨论】:
标签: sql sql-server select count sum