hel*_*123 1 sql sql-server select sum count
我有一个包含ID列表的表,每个ID的状态为HW,HB,PIP或TBC.
我想计算每种状态的人数,所以我会有一张表看起来像
HW HB PIP TBC
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')
Run Code Online (Sandbox Code Playgroud)
这回来了
StatusHW
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
Run Code Online (Sandbox Code Playgroud)
这会返回一个4x4表,其中包含行1,2,3,4和列Status,StatusHW,...,StatusTBC.这更接近我所追求的,但仍然不对.
任何帮助,将不胜感激.
谢谢
只需删除group by已经处理过这些条件,同时汇总为:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
738 次 |
| 最近记录: |