嗨,我有一个表与状态列。如何使用SQL获取记录总数,带有传递状态的记录总数和带有失败状态的记录总数?选择查询以获得SQL Server中的总记录数
0
A
回答
1
我会写类似
select
Count(*) as TotalRecords,
Sum(case where status = 'Pass' then 1 else 0 end) as PassRecords,
Sum(case where status = 'Fail' then 1 else 0 end) as FaileRecords
from Table
2
怎么是这样的:
SELECT Status, COUNT(*)
FROM dbo.YourTable
GROUP BY Status WITH ROLLUP
这会工作,如果这两个状态(及格,不及格)是唯一的状态(否则你需要一个WHERE Status IN ('fail', 'pass')
条件还) - 和WITH ROLLUP
也将给你行的总数(以输出与Status = NULL
)所有状态
0
您可以用case语句和聚合做到这一点:
select count(*), sum(case when status = 'pass' then 1 else 0 end) as pass,
sum(case when status = 'fail' then 1 else 0 end) as fail
from t
0
一对夫妇的其他替代品(SQL服务器2008+)查询:
DECLARE @foo TABLE([status] CHAR(4));
INSERT @foo SELECT 'pass'
UNION ALL SELECT 'pass'
UNION ALL SELECT 'fail';
-- option #1:
SELECT [status], c = COUNT(*)
FROM @foo
GROUP BY GROUPING SETS(([status]),());
-- option #2:
SELECT [status], c = COUNT(*)
FROM @foo
GROUP BY [status]
UNION ALL
SELECT NULL, COUNT(*) OVER() FROM @foo;
相关问题
- 1. SQL查询选择记录
- 2. SQL查询记录总数
- 3. SQL查询选择最近的记录以及空记录
- 4. 选择总计只返回SQL Server中的一条记录
- 5. SQL查询来选择总
- 6. SQL Server:选择子查询结果的总和,ConnectWise数据库
- 7. 从选择查询中计数记录。
- 8. 在SQL查询中选择除了最大记录以外的所有记录
- 9. 为sql server选择查询
- 10. SQL Server查询选择
- 11. 在SQL Server表中选择记录
- 12. SQL查询,其中0,使用2台获得的记录数
- 13. SQL查询获得表A和表B中的记录数
- 14. 总SQL Server查询
- 15. SQL Server查询 - 选择ID计数()
- 16. SQL查询选择
- 17. 如何在mongodb中查询以获得明显的记录数
- 18. 如何在SQL Server 2008中选择以前的记录
- 19. 查找SQL Server 2008中每个客户的记录总数
- 20. SQL Server 2005中选择查询
- 21. 使用SQL Server查找子记录中所有相关记录的总数
- 22. MySQL选择查询:计算计数并获得总计
- 23. 如何获得我在SQL Server查询中选择的最后一列的ID?
- 24. SQL Server:加入最高记录选择
- 25. 记录总数及其原因SQL Server
- 26. SQL查询得到不同的记录
- 27. 查询得到的记录小于SQL
- 28. SQL Server查询返回太多记录
- 29. 从SQL Server中选择记录如下面的数据
- 30. SQL Server +选择所有不同记录的前1条记录
我猜想有可能是在状态,我们没有其他的值关心 – automatic 2012-07-26 18:11:11