如何根据条件向现有 SQL 服务器 table 添加列?

How to add column to an existing SQL Server table based on condition?

我想根据 table 中 3 列的条件向现有 table 添加一列,如下例所示。

我有 3 列:

其中每一列的值是另一个 table 对应值的 ID 号(过期值为 1)(待定值为 2)...

我想要的是添加一个名为 status 的列,将所有这 3 列合并为 1

我尝试使用 CASE WHEN 但没有按预期工作:

SELECT 
    EXPIRED, pending, on_the_go,
    CASE EXPIRED
        WHEN 1 THEN 1
    END AS status_type,
    CASE pending
        WHEN 2 THEN 2
    END AS status_type,
    CASE on_the_go
        WHEN 3 THEN 3
    END AS status_type,
    COUNT(*) AS number_of_exchange_activities 
FROM 
    card 
GROUP BY 
    EXPIRED, pending, on_the_go
EXPIRED pending on_the_go status_type status_type status_type number_of_exchange_activities
0 2 0 NULL 2 NULL 550
0 0 3 NULL NULL 3 320
1 0 0 1 NULL NULL 310

这是我期望得到的:

EXPIRED pending on_the_go status_type number_of_exchange_activities
0 2 0 2 550
0 0 3 3 320
1 0 0 1 310

您可以使用 case 的长格式,这样您就可以在每个 when 子句中放置完整的条件:

SELECT   expired, pending, on_the_go,
         CASE WHEN expired = 1 THEN 1
              WHEN pending = 2 THEN 2
              WHEN on_the_go = 3 THEN 3
         END AS status_type,
         COUNT(*) AS number_of_exchange_activities 
FROM     card 
GROUP BY expired, pending, on_the_go
CASE  
    WHEN EXPIRED = 1 THEN 1 
    WHEN pending = 2 THEN 2 
    WHEN on_the_go = 3 THEN 3 
    ELSE 0
END As 'status_type'