ホームページ > データベース > mysql チュートリアル > Oracle で行を列に動的にピボットするにはどうすればよいですか?

Oracle で行を列に動的にピボットするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-06 14:14:46
オリジナル
624 人が閲覧しました

How Can I Dynamically Pivot Rows into Columns in Oracle?

Oracle での動的ピボット: 行から列への変換

この記事では、Oracle で行を列に動的にピボットするという課題について説明します。この手法を使用すると、キーと値が行に格納されているデータを、キーを表す列と値を表す行を含む表形式に変換できます。

問題

主キーとして ID、キー (K)、および値 (V) を持つテーブルが与えられた場合、目的は、元のテーブルにある一意のキーと同じ数の列を持つピボット テーブルを作成することです。 テーブル。クエリは、動的に発生する可能性のある未知の列名を処理できる必要があります。

Oracle 11g ソリューション

Oracle 11g は、この要件を満たす PIVOT 操作を提供します。次のクエリは、その使用法を示しています。

select * from (select id, k, v from _kv) pivot(max(v) for k in ('name', 'age', 'gender', 'status'))
ログイン後にコピー

Oracle XML ピボット オプション (Oracle 11g)

列見出しが不明なシナリオのために、Oracle はピボット XML を提供します。クエリに示されているオプション以下:

select * from (select id, k, v from _kv) pivot xml (max(v) for k in (any))
ログイン後にコピー

編集:

コメントで指摘されているように、値を集計し IN 句を含めるようにクエリに変更が加えられました。ただし、IN 句に値を指定すると、クエリの動的な性質が妨げられます。

以上がOracle で行を列に動的にピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート