首页 > 解决方案 > 在 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 中选择条件组内的值?

标签: sqlgroup-byconditionalcase

解决方案


由于您没有涉及任何聚合函数,因此您可以使用DISTINCT

SELECT DISTINCT u.CountryId AS Country, 
       (CASE WHEN @dataCase = 1 THEN u.City 
             ELSE '-' 
        END) AS City     
FROM [User] u;

推荐阅读