該当する結果がありません

一致する検索結果がありませんでした

お探しのものを見つけるために、以下の項目を試してみてください。

  • キーワード検索のスペルを確認してください。
  • 入力したキーワードの同義語を使用してください。たとえば、「ソフトウェア」の代わりに「アプリケーション」を試してみてください。
  • 下記に示すよく使用される検索語句のいずれかを試してみてください。
  • 新しい検索を開始してください。

 

急上昇中の質問

第8回 PivotとUnPivot OracleのSQLの各機能をイメージを交えて解説

Oracle ACE

山岸 賢治(やまぎし けんじ)

図でイメージするOracle DatabaseのSQL全集

SQLの初心者から上級者までを広く対象読者として、Oracle SQLの各機能の典型的な使用例を、学習効率が高いと思われる順序で、SQLのイメージ図を交えて解説します。
SQLをイメージつきで理解することで、素早くイメージからSQLを考えられるようになることを目標とします。

目次

第1部 PivotとUnPivotとは

第2部 Pivotの使用例

第3部 UnPivotの使用例

今回のテーマ

今回は、下記のOracleのSQL文の評価順序においての、1番目のfrom句で行列変換を行うことができる、PivotとUnPivotの使用例と私のSQLのイメージを解説します。

1 番目 from句
2 番目 where句 (結合条件)
3 番目 start with句
4 番目 connect by句
5 番目 where句 (行のフィルタ条件)
6 番目 group by句
7 番目 having句
8 番目 model句
9 番目 select句
10 番目 union、minus、intersectなどの集合演算
11 番目 order by句

動作確認環境

Oracle Database 11g Release 11.2.0.1.0 (Windows 32ビット版)

1 PivotとUnPivotとは

select文での行列変換

PivotとUnPivotはOracle11gR1の新機能で、select文での行列変換を容易に行うことができます。

英和辞典のPivotの意味の中で、select文でのPivotの意味に近いものを選ぶと、

動詞では、「旋回する,回転する」。名詞では、「旋回軸,回転軸」となります。

select文での評価順序において、PivotとUnPivotはfrom句の一部として評価されます。

▲ ページTOPに戻る

2 select文でのPivotとUnPivotの評価順序

from句の一部として評価されている例

PivotとUnPivotはfrom句の一部として評価されるので下記のようなselect文も実行できます。

PivotやUnPivotした結果に表別名を付けることもできます。


-- from句の一部として評価されている例1
select * from (select 1 as ColA,5 as ColB from dual)
UnPivot(Vals1 for Cols1 in(ColA,ColA,ColA))
UnPivot(Vals2 for Cols2 in(ColB,ColB))
Pivot(count(*) for Vals1 in(1 as C1))
Pivot(count(*) for Vals2 in(5 as C2)) a 
Join dual b
  on a.C1 = 6;

出力結果
Cols1  Cols2  C1  C2  Dummy
-----  -----  --  --  -----
COLA   COLB    6   1  X

-- from句の一部として評価されている例2
with work(ColA,ColB) as(
select 1,1 from dual union all
select 2,2 from dual)
select *
  from work Join dual on 1=1
UnPivot(Vals for Cols in(ColA,ColB));

出力結果
Dummy  Cols  Vals
-----  ----  ----
X      COLA     1
X      COLB     1
X      COLA     2
X      COLB     2