首頁 >資料庫 >mysql教程 >如何在 Oracle 中使用 DECODE 和 PIVOT 將行轉換為列?

如何在 Oracle 中使用 DECODE 和 PIVOT 將行轉換為列?

Susan Sarandon
Susan Sarandon原創
2024-12-31 15:54:21596瀏覽

How to Transform Rows into Columns in Oracle Using DECODE and PIVOT?

如何在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中文網其他相關文章!

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