sql - 在 SQL 中选择条件组中包含的值
问题描述
根据 @dataCase 值,结果将按国家或国家和城市分组。
SELECT
User.CountryId AS Country
FROM User
GROUP BY User.CountryId,
CASE
WHEN @dataCase = 1 THEN User.City
END
但是在结果按城市分组的情况下,我无法获得价值。它显示以下错误。
“列 'User.City' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。”
SELECT
User.CountryId AS Country,
CASE
WHEN @dataCase != 1 THEN '-'
WHEN @dataCase = 1 THEN User.City
END AS City
FROM User
GROUP BY User.CountryId,
CASE
WHEN @dataCase = 1 THEN User.City
END
是否可以在 SQL 中选择条件组内的值?
解决方案
由于您没有涉及任何聚合函数,因此您可以使用DISTINCT
:
SELECT DISTINCT u.CountryId AS Country,
(CASE WHEN @dataCase = 1 THEN u.City
ELSE '-'
END) AS City
FROM [User] u;
推荐阅读
- elasticsearch - 如何显着最小化与脚本聚合的查询的弹性搜索查询执行时间
- websocket - WebSocket 的 POC 打开握手延迟到最大时间
- android - ADB dumpsys View Hierarchy - 试图理解视图输出(例如:V.ED..C.. ......I.)
- python - 如何有效地将熊猫系列/数据帧的子集剪辑到范围
- security - 如何知道支持 sg_sanitize?
- c# - 统一的 Pubnub 空引用异常
- html - 如何在不移动 flexbox 容器中左侧的 div 的情况下移动右侧的 div?
- javascript - 如何在本地搜索巨大的 JSON 文件?
- python - 在 run_in_executor 中运行图像操作。适应多处理
- java - 如何在 Spring Boot 中使 ThreadPoolTaskExecutor 访问请求范围 bean