首頁 >資料庫 >mysql教程 >Oracle中如何有效率地將行轉換為列?

Oracle中如何有效率地將行轉換為列?

DDD
DDD原創
2025-01-04 21:27:40425瀏覽

How to Efficiently Transform Rows into Columns in Oracle?

如何在 Oracle 中將行轉換為列

面臨將多行多列的表資料轉換為更具可讀性的列式結構的挑戰? Oracle 資料庫提供了強大的技術來簡化此任務。

假設您有一個包含貸款資訊和文件的表,例如:

LOAN NUMBER | DOCUMENT_TYPE | DOCUMENT_ID
------------------------------------------
992452533663 | Voters ID | XPD0355636
992452533663 | Pan card | CHXPS5522D
992452533663 | Drivers licence | DL-0420110141769

要將這些行轉換為結構化資料列,您可以利用Oracle 10g 中的DECODE 函數或Oracle 11g 中引入的PIVOT 子句。

DECODE 函數 (Oracle 10g)

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 函數根據特定文件類型將值指派給所需的欄位。然後,MAX 函數傳回每個列的符合文件 ID。

PIVOT 子句 (Oracle 11g)

SELECT *
FROM doc_tab
PIVOT (
  MAX(document_id) FOR document_type IN ('Voters ID','Pan card','Drivers licence')
);

PIVOT 子句將文件類型作為列對齊,並將對應的文件 ID 放入適當的儲存格中。

透過利用這些技術,您可以有效地將資料重塑為更以列為中心的佈局,從而更容易了解並進一步分析。

以上是Oracle中如何有效率地將行轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn