sql - 选择 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 列,而不是两行。
解决方案
我相信这会满足您的需求:
SELECT COUNT(*),
SUM(CASE WHEN MONTH[CreatedDate] = MONTH(GETDATE()) AND YEAR(CreatedDate) = YEAR(GETDATE()) THEN 1 ELSE 0 END) as SubCountWithCriteria
FROM [Users]
推荐阅读
- android - 无法在 Xamarin Android 应用程序中加载用于 ImageSharp 的字体
- c# - NodaTime Instant 的序列化不适用于 Asp.Net Core web api 和 OData
- c# - 如何使用 Selenium 和 Firefox 自动下载可执行文件
- windows - 如何从 Microsoft 为我的 Windows 10 微型过滤器驱动程序签名
- php - 带有子字符串过滤器的 Sql 查询以更新数据
- testing - 维护与回归测试
- python - 具有时变截止频率的低通滤波器,使用 Python
- php - 按 ASC 顺序排序
- kubernetes - kubernetes 可能同时运行不同的图像,这会导致问题吗?
- php - 如何在php中获取和存储菜单值