我想根據表中 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_activitys |
|---|---|---|---|---|---|---|
| 0 | 2 | 0 | 空值 | 2 | 空值 | 550 |
| 0 | 0 | 3 | 空值 | 空值 | 3 | 320 |
| 1 | 0 | 0 | 1 | 空值 | 空值 | 310 |
這是我期望得到的:
| 已到期 | 待辦的 | 在旅途中 | 狀態型別 | number_of_exchange_activitys |
|---|---|---|---|---|
| 0 | 2 | 0 | 2 | 550 |
| 0 | 0 | 3 | 3 | 320 |
| 1 | 0 | 0 | 1 | 310 |
uj5u.com熱心網友回復:
您可以使用長形式的casethat 允許您在每個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
uj5u.com熱心網友回復:
CASE
WHEN EXPIRED = 1 THEN 1
WHEN pending = 2 THEN 2
WHEN on_the_go = 3 THEN 3
ELSE 0
END As 'status_type'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/389552.html
標籤:sql sql-server 选择 通过...分组 案件
