首頁 > 資料庫 > mysql教程 > 如何在 Oracle 中動態地將行轉換為列?

如何在 Oracle 中動態地將行轉換為列?

Patricia Arquette
發布: 2025-01-06 14:23:44
原創
432 人瀏覽過

How to Dynamically Pivot Rows into Columns in Oracle?

在Oracle 中動態地將行轉換為列

您在Oracle 10g 中有一個包含鍵和值對的表,並且希望將其轉換為包含以下列的表每個唯一的鍵,每行都有對應的值。生成的表應動態調整以適應添加到原始表中的任何新鍵值對。

Oracle 11g 解決方案

Oracle 11g 引入了PIVOT 操作,使您能夠執行此類動態透視:

select * from
(select id, k, v from _kv)
pivot(max(v) for k in ('name', 'age', 'gender', 'status'))
登入後複製

此查詢將建立一個動態透視表,其中包含IN 中指定的四個鍵中的每一個的列

XML透視選項

Oracle 11g 還提供了一個透視XML 選項,讓您可以處理未知的列標題:

select * from
(select id, k, v from _kv)
pivot xml(max(v) for k in (any))
登入後複製

此查詢將產生XML 結果集合,其中每一列對應一個唯一鍵,關聯值儲存為XML元素的

註解:

  • 提供的解決方案假設每個鍵的值都是聚合的(使用 max),但您可以根據需要調整聚合函數。
  • 需要注意的是,雖然資料透視 XML 選項允許任意數量的未知列,但它需要在 IN 子句中指定列,這可能並不總是可行。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板