0

私はOracleデータベースを初めて使用し、PIVOTを使用して行を列に変換しようとしています。私は次のテーブルを持っています..

table 1
solid       solname
--------------
1        xxxxxx
2        yyyyyyy
table2
id      name           abbrv 
----------------------------------
1        test db          tdb
2        Prdocuiton db     pdb

table3
id     solId
-------------
1   1
1   2
1   3
1   4
1   5
1   7
1   8
1   9
1   22
1   23
1   24
1   25
2   26
2   27
1   28
1   29
1   32
1   33
1   34
1   35
1   36
1   37
3   38
1   39
1   40
1   43
1   44

テーブル 3 は、テーブル 1 とテーブル 3 のマッパー テーブルです。

table2 の列と、solname ごとに追加の列を含むビューを作成する必要があります。ビューは次のようになります

id      name           abbrv   xxxxxxx    yyyyyyy
--------------------------------------------------

OracleデータベースでPIVOTを使用してこれを行う方法はありますか?

4

3 に答える 3

0

xxxx 列と yyyy 列に何を格納するかは実際には定義されていませんでした。おそらく 1/空白、Y/N などです。ただし、クエリは次のようになります。

SELECT * FROM (
  SELECT *
  FROM table3 t3
  JOIN table2 t2 USING (id)
  JOIN table1 t1 USING (solid)
) PIVOT (
  COUNT(*) FOR (solname) IN (
    ('xxx') AS "XXX",
    ('yyy') AS "YYY"
  )
)

My Blogで詳細情報と追加のリファレンスを見つけることができます。

于 2013-11-07T04:49:10.757 に答える