簡體   English   中英

如何根據條件向現有的 SQL 服務器表添加列?

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

我想根據表中 3 列的條件向現有表中添加一列,如下例所示。

我有 3 列:

  • 已到期
  • 待辦的
  • 在旅途中

其中每一列的值都是來自另一個表的對應值的 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
已到期 待辦的 在旅途中 狀態類型 狀態類型 狀態類型 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

這是我期望得到的:

已到期 待辦的 在旅途中 狀態類型 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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM