使用 CASE 语句将多个值组合到一个字段中

问题描述 投票:0回答:1

这是一个非常简单的问题,因为我对 MS SQL 还很陌生。我正在尝试找出一种方法,使用 case 语句将除一个之外的所有值组合到一个字段中。更清楚地说,以 Northwind 数据库为例,我想制作一个表格,显示向德国客户下的订单数量以及向其他地方的客户下的订单数量。

这是我尝试的查询:

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

当然,会出现这样一个表格,其中每个国家/地区都单独出现,别名为“其他地方”。

Everywhere Else 22
Everywhere Else 122
Everywhere Else 28
Everywhere Else 83
Germany 122
Everywhere Else 18
Everywhere Else 28
Everywhere Else 37
Everywhere Else 16
Everywhere Else 40
Everywhere Else 56
Everywhere Else 7
Everywhere Else 30
Everywhere Else 19
Everywhere Else 6
Everywhere Else 77

我希望将所有“其他地方”字段合并为一个。我知道这是可能的,因为我以前做过类似的事情,但我不记得是怎么做的。

sql sql-server case aggregate-functions
1个回答
0
投票

只是为了扩展我的评论。

SELECT C.ShipTo
      ,count(OrderID)
 FROM  Customers A
 JOIN Orders B ON A.CustomerID = B.CustomerID
 Cross Apply ( values (CASE WHEN A.Country = 'Germany' THEN 'Germany'        
                            ELSE 'Everywhere Else'  
                       END ) 
             ) C(ShipTo)
GROUP BY C.ShipTo;
© www.soinside.com 2019 - 2024. All rights reserved.