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 サイトの他の関連記事を参照してください。