[英]Convert multiple record to multiple columns in DB2
我有一個如下所示的數據集:
ID Type Email
1 A emily&gmail.com
1 B adam&gmail.com
1 C tim&gmail.com
2 A jim&gmail.com
2 C kenny&gmail.com
3 A sam&gmail.com
3 B asd123&gmail.com
3 C emma&gmail.com
4 D jkl&gmail.com
4 F tester&gmail.com
4 G form&gmail.com
5 B another&gmail.com
5 C idk&gmail.com
我想在 Cloud DB2 實例中使用 SQL 將其轉換為這種格式:
ID A B
1 emily&gmail.com adam&gmail.com
2 jim&gmail.com NULL
3 sam&gmail.com asd123&gmail.com
4 NULL NULL
5 NULL another&gmail.com
如示例所示,在我的原始表中,我有 3 列,其中類型可以是 A、B、C、D、E、F 或 G。我想創建一個新數據集,我只保留 ID 列,每個 ID這里必須是獨一無二的。 從前面的類型列中,A 和 B 將是此數據集中的列。 如果一個ID在第一個數據集中的類型為A,則對應的email地址將go到A列。 B 也一樣。如果第一個數據集中沒有 A 或 B 記錄,則值應為 NULL。
我嘗試了以下代碼,但可能語法有問題:
SELECT ID
MAX(CASE WHEN ROLE = 'A' THEN T.EMAIL ELSE NULL END) AS A,
MAX(CASE WHEN ROLE = 'B' THEN T.EMAIL ELSE NULL END) AS B
FROM MYSCHEMA.MYTABLE T
只是在這里得到一個答案,因為答案來自評論。 我只是錯過了 group by,我可以通過刪除 else null 部分來縮短查詢:
SELECT ID
MAX(CASE WHEN ROLE = 'A' THEN T.EMAIL END) AS A,
MAX(CASE WHEN ROLE = 'B' THEN T.EMAIL ELSE NULL END) AS B
FROM MYSCHEMA.MYTABLE T
GROUPBY ID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.