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