在Oracle 中將行轉換為列:利用DECODE 和PIVOT
問題:
轉換一個表,其中的行表示與貸款編號關聯的多種文件類型和ID柱狀格式。產生的表格應為每個貸款編號單獨一行,並包含每種文件類型和相應 ID 的列。
範例:
輸入表:
LOAN NUMBER | DOCUMENT_TYPE | DOCUMENT_ID |
---|---|---|
992452533663 | Voters ID | XPD0355636 |
992452533663 | Pan card | CHXPS5522D |
992452533663 | Drivers licence | DL-0420110141769 |
預期輸出:
LOAN NUMBER | VOTERS_ID | PAN_CARD | DRIVERS LICENCE |
---|---|---|---|
992452533663 | XPD0355636 | CHXPS5522D | DL-0420110141769 |
Oracle解:
DECODE 方法:
SELECT loan_number, MAX(DECODE(document_type, 'Voters ID', document_id)) AS voters_id, MAX(DECODE(document_type, 'Pan card', document_id)) AS pan_card, MAX(DECODE(document_type, 'Drivers licence', document_id)) AS drivers_licence FROM input_table GROUP BY loan_number ORDER BY loan_number;
SELECT * FROM input_table PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence') );
以上是如何在 Oracle 中使用 DECODE 和 PIVOT 將行轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!