簡體   English   中英

DB2 將多條記錄轉換為多列

[英]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.

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