如何在Oracle 中將行轉換為列
在Oracle 中,您可能會遇到資料按行排列但需要按行排列的情況以柱狀方式顯示。本文深入探討使用 DECODE 函數或 PIVOT 子句將行轉換為列的方法。
考慮下表包含貸款詳細資訊:
LOAN NUMBER DOCUMENT_TYPE DOCUMENT_ID 992452533663 Voters ID XPD0355636 992452533663 Pan card CHXPS5522D 992452533663 Drivers license DL-0420110141769
要將行轉換為列,您可以使用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 license', document_id)) AS drivers_licence FROM doc_tab GROUP BY loan_number ORDER BY loan_number;
此查詢產生以下結果輸出:
LOAN_NUMBER VOTERS_ID PAN_CARD DRIVERS_LICENCE ------------- -------------------- -------------------- -------------------- 992452533663 XPD0355636 CHXPS5522D DL-0420110141769
在Oracle 11g 及更高版本中,PIVOT子句提供了一種更簡單的方法來實現相同的結果:
SELECT * FROM doc_tab PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers license') );
兩種方法都可以有效地將行轉換為列,從而允許您可以以首選格式操作和顯示資料。
以上是如何在 Oracle 中使用 DECODE 和 PIVOT 將行轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!