You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS SQL:如何用CASE语句合并多值为单字段统计订单数

解决MS SQL中CASE分组合并的问题

你的问题出在GROUP BY子句上——你现在是按原始的Country字段分组,所以即使CASE把非德国的都显示成"Everywhere Else",数据库还是会把每个不同的非德国国家单独分组,最终输出多行同名的结果。

只需要把GROUP BY的字段改成和SELECT里的CASE表达式一致就行,或者直接引用CASE的别名(MS SQL支持在GROUP BY中使用SELECT里的别名),修正后的查询如下:

SELECT 
    CASE
        WHEN A.Country = 'Germany' THEN 'Germany'
        ELSE 'Everywhere Else'
    END AS ShipTo,
    COUNT(OrderID) AS OrderCount
FROM Customers A
INNER JOIN Orders B ON A.CustomerID = B.CustomerID
GROUP BY 
    CASE
        WHEN A.Country = 'Germany' THEN 'Germany'
        ELSE 'Everywhere Else'
    END;

或者更简洁的写法(利用MS SQL允许GROUP BY引用SELECT别名的特性):

SELECT 
    CASE
        WHEN A.Country = 'Germany' THEN 'Germany'
        ELSE 'Everywhere Else'
    END AS ShipTo,
    COUNT(OrderID) AS OrderCount
FROM Customers A
INNER JOIN Orders B ON A.CustomerID = B.CustomerID
GROUP BY ShipTo;

这样执行后,所有非德国的订单会被合并到一行"Everywhere Else"中,最终只会输出两行结果:一行是德国的订单总数,一行是其他所有国家的订单总数。

内容的提问来源于stack exchange,提问作者LibrarianMN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:20:57