Oracle 資料庫提供了將資料從行重組為列的通用技術,這一過程稱為透視。當資料以狹窄的格式組織時,這種轉換就變得必要,並且需要以更廣泛的視圖呈現它。
為了完成行到列的轉換,Oracle 提供了兩種方法:
在早期版本的Oracle (10g) 中,可以使用DECODE 函數實現透視。考慮以下表格結構:
LOAN NUMBER | DOCUMENT_TYPE | DOCUMENT_ID |
---|---|---|
992452533663 | Voters ID | XPD0355636 |
992452533663 | Pan card | CHXPS5522D |
992452533663 | Drivers licence | 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 licence', document_id)) AS drivers_licence FROM doc_tab GROUP BY loan_number ORDER BY loan_number;
此查詢按貸款編號對數據進行分組並使用嵌入套DECODE用於將文檔ID 指派給特定文檔類型的函數。 MAX 函數為每個貸款文件組合傳回所需的單一值。
Oracle 11g 引入了專用的 PIVOT 子句來簡化行到列的轉換。以下查詢示範了其用法:
SELECT * FROM doc_tab PIVOT ( MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence') );
此查詢中的 PIVOT 子句明確定義要在轉換結果中建立的資料列。它會根據指定的文檔類型自動對資料進行分組,並組合匹配的文檔 ID。
要進一步了解 Oracle中的資料透視技術,請參考以下資源:
以上是如何在 Oracle 中將行透視為列:DECODE 與 PIVOT?的詳細內容。更多資訊請關注PHP中文網其他相關文章!