如何根据sql server中一列的值进行分组并获得行数
问题描述:
我有一个列请求列表RequestType,状态.Status列值可以进行中,编译等。 我想获得像如何根据sql server中一列的值进行分组并获得行数
RequestType In-Progress Completed Total
Type1 10 5 15
Type2 10 10 20
列表我集团通过使用2列(请求类型,状态),但它并没有给我确切的结果。
请帮我使用sql查询。
在此先感谢 李苏滨
答
一种方式做到这一点是使用条件aggrigation:
SELECT RequestType,
SUM(CASE WHEN Status = 'In-Progress' THEN 1 ELSE 0 END) As 'In-Progress',
SUM(CASE WHEN Status = 'Completed' THEN 1 ELSE 0 END) As 'Completed',
COUNT(Status) As 'Total'
FROM TableName
WHERE Status IN('In-Progress', 'Completed')
GROUP BY RequestType
答
使用PIVOT
select *, [In-Progress]+[Completed] total
from TableName
pivot (count(status) for status in ([In-Progress], [Completed])) as p
价值观'Status'栏是固定的或新的状态能在将来添加 –
也会在此处显示您的状态列 –
只显示与您的结果不匹配的结果ctations。 – rbr94