![](/img/trans.png)
[英]How to add new column from another table based on a condition in sql server
[英]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.