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

如何使用 DECODE 或 PIVOT 在 Oracle 中有效地將行轉換為列?

Linda Hamilton
Linda Hamilton原創
2025-01-01 10:02:12625瀏覽

How to Efficiently Pivot Rows into Columns in Oracle Using DECODE or PIVOT?

在 Oracle 中將行轉換為列

資料表通常包含分佈在各個實體的多行中的資訊。為了提高資料可讀性和分析能力,將這些行轉換為列可能會很有幫助。此問題演示了一個實際用例,即將包含單一貸款號碼的文件資訊的表轉換為更用戶友好的格式。

在 Oracle 中,可以使用 DECODE 函數或 PIVOT 有效地將行轉換為列條款。讓我們探討如何使用這些方法來解決問題中提出的問題:

使用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 函數來分配根據document_type 將document_type值會新增到適當的列。 MAX() 聚合函數用於檢索每個文件類型的最新 document_id。

使用 PIVOT 子句(在 Oracle 11g 中可用)

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

PIVOT 子句提供了一種更簡潔的方式將行轉換為列。它需要指定聚合函數(在本例中為 MAX)和要旋轉的列。

兩種方法都可以有效地將行轉換為列,從而為每個貸款編號的文件資訊提供更直觀、更有組織的視圖。

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

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