如何根据sql server中一列的值对行进行分组并获取行数

如何根据sql server中一列的值对行进行分组并获取行数,sql,sql-server,Sql,Sql Server,我有一个列为RequestType、status的请求表。status列的值可以是progress、Completed等。 我想得到一张这样的名单 RequestType In-Progress Completed Total Type1 10 5 15 Type2 10 10 20 我尝试使用两列(RequestType、status)来处理group,但它没有给出确切的

我有一个列为RequestType、status的请求表。status列的值可以是progress、Completed等。 我想得到一张这样的名单

RequestType  In-Progress  Completed    Total 
Type1         10          5            15
Type2         10          10           20
我尝试使用两列(RequestType、status)来处理group,但它没有给出确切的结果

请帮助我进行sql查询

提前谢谢
Subin

一种方法是使用条件聚合:

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
列中的值是固定的,或者将来可以添加新状态也可以在此处显示您的状态列只显示不符合您期望的结果。可以添加。但我只需要显示这两种状态的计数。您必须使用
PIVOT