2016-12-21 10 views
0

テーブルからの年、コード、ベンチマークを選択する。Oracle列の行が複数の列に分割される

結果:年、コード、ベンチマーク

2017, MKPI00719, 1 
    2017, MKPI00719, benchmark0001 
    2017, MKPI00719, 2016 
    2017, MKPI00719, 90 
    2017, MKPI00743, 1 
    2017, MKPI00743, benchmark34455 
    2017, MKPI00743, 2013 
    2017, MKPI00743, 900 

私はこの

Year, code,  ben_value, desc,   b_year, kpi 
2017, MKPI00719, 1,  benchmark0001, 2016, 90 
2017, MKPI00743, 1,  benchmark87899, 2013, 900 

のように下に常に1このsenario ben_valueを表示したいです。それは、年にコード に属するユニークなグループです。

オラクル

+0

SQLテーブルは、本質的に順序付けられていません。データの並べ替えは、行の順序に依存しているようです。順序を指定する別の列がありますか? –

+0

はい、シーケンスを取得しました – bab

+0

サンプルのデータにそのシーケンス番号を追加します - どのように動作するのか分かりません。そのシーケンスの典型的な値は(あなたが含んだ行に対して)何ですか? – mathguy

答えて

0

に私のSQLを記述するためにどのように私を助けてくださいあなたは、シーケンス番号を持っている場合は、私は次のようにあなたの問題を解決すると思う:

select year, code, 
     max(case when seqnum = 1 then benchmark end) as ben_value, 
     max(case when seqnum = 2 then benchmark end) as description, 
     max(case when seqnum = 3 then benchmark end) as b_year, 
     max(case when seqnum = 4 then benchmark end) as kpi 
from (select t.*, 
      row_number() over (partition by year, code order by sequence_no) as seqnum 
     from t 
    ) t 
group by year, code 
+0

ありがとう、ありがとう – bab

関連する問題