0

私のテーブルは次のようになります

ID    AB_ID   VALUES
1      2        20
2      2        10
3      2        30
4      2        60

返すクエリを作成したい

AB_ID     value1     value2     value3     value4
  2        20          10        30           60    

お手伝いありがとう。

4

1 に答える 1

0

ごとAB_IDに 4 つの行があることがわかっているので、これらの線に沿ってピボットを実行できるはずです。

SELECT ab_id,
       MAX( CASE WHEN rn = 1 THEN values ELSE NULL END ) value1,
       MAX( CASE WHEN rn = 2 THEN values ELSE NULL END ) value2,
       MAX( CASE WHEN rn = 3 THEN values ELSE NULL END ) value3,
       MAX( CASE WHEN rn = 4 THEN values ELSE NULL END ) value4
  FROM (SELECT ab_id,
               values,
               rank() over (partition by ab_id 
                                order by id) rn
          FROM your_table)
 GROUP BY ab_id

PIVOTOracle 11.2 を使用している場合は、キーワードも使用できるはずです。ただし、使用している Oracle のバージョンはわかりません。

于 2012-07-30T15:24:30.007 に答える