首页 > 解决方案 > 选择 2 个具有不同要求的值

问题描述

我想知道是否可以在具有不同标准的单个选择语句中选择 2 个值。我知道我可以通过子查询实现上述目标,只是想知道是否有更有效的方法来做到这一点。

考虑下表:

UserId | CreatedDate
1      | 2018-01-21
2      | 2018-02-21
3      | 2018-03-21
4      | 2018-11-21
5      | 2018-11-21

我希望选择用户总数以及本月加入的用户总数。我可以用这样的两个查询来做到这一点:

SELECT COUNT(*) 
FROM [Users]

SELECT COUNT(*) 
FROM [Users] 
WHERE MONTH(CreatedDate) = MONTH(GETDATE()) AND YEAR(CreatedDate) = YEAR(GETDATE())

但是,这可以是与两个查询相反的单个选择吗?

编辑:为了消除混乱,我正在寻找 2 列,而不是两行。

标签: sqlsql-serversql-server-2014

解决方案


我相信这会满足您的需求:

SELECT COUNT(*), 
SUM(CASE WHEN MONTH[CreatedDate] = MONTH(GETDATE()) AND YEAR(CreatedDate) = YEAR(GETDATE()) THEN 1 ELSE 0 END) as SubCountWithCriteria
FROM [Users] 

推荐阅读