嗨,我想编写一个 SQL 语句,它从同一个表中返回计数和计数(不同),但使用不同的 WHERE 子句。
例如
People
-----------------------
ID Name Sex
1 Alex F
2 Alex M
3 Alex M
4 Andy F
5 Andy M
6 Ann F
7 Ann F
在这个例子中,我可以写SELECT (SELECT COUNT(1) FROM People), (SELECT COUNT(DISTINCT Name) FROM People)
,但是 SELECT 太多了。所以我改写SELECT COUNT(1), COUNT(DISTINCT Name) FROM People
。
但是,如果我想返回类似SELECT (SELECT COUNT(1) FROM People), (SELECT COUNT(DISTINCT Name) FROM People WHERE Sex='M')
. 你如何像上面那样做同样的事情来减少 SELECT?
我不知道这是否相关,我知道我可以编写类似SELECT COUNT(1), SUM(CASE WHEN Sex='M' THEN 1 ELSE 0 END) FROM People
在一个 SELECT 中具有不同 WHERE 子句的东西,但这仅适用于 COUNT,它不处理 DISTINCT。当需要 DISTINCT 时如何使用它?
数据库是 SQL Server 2008 R2,谢谢