2017-08-19 13 views
0

私はこのようになりますテーブルがあります。変換一覧

CatID ParentID 
1  0 
2  1 
3  2 
4  3 
5  0 
6  1 
7  2 

をそして、これは私が達成したい結果である:

Cat0 Cat1 Cat2 Cat3 Cat4 Cat5 Cat6 Cat7 
1  2  3  4 
5  6  7 

私はどのように行うことができますこの?私は一時的なテーブルを作成することを考えましたが、それをどのようにして所望のフォーマットのデータで埋めるのかを知りません。

誰でも助けてください。

CatIDのあるテーブルは非常に長く、54Kの一意のCatIDがあります。

Actual list of CatIDs in excel

+0

あなたのデータ構造は意味がありません。なぜ階層7 - > 2 - > 1ではないのですか? 7 - > 6 - > 5はどこから来たのですか? –

答えて

1

私は理解してだと思います。あなたは、条件付き集計でこれを行うことができます:ここで

select max(case when parentid = 0 then catid end) as cat0, 
     max(case when parentid = 1 then catid end) as cat1, 
     max(case when parentid = 2 then catid end) as cat2, 
     . . . 
from (select t.*, 
      row_number() over (partition by parentid order by catid) as seqnum 
     from t 
    ) t 
group by seqnum; 

rextesterです。

+0

明らかに私は質問を読まなかった+1 –

+0

ありがとうゴードン!実際に私が私の例で提供したデータセットでは、それは機能します。私はCatIDのリストが最初に非常に長いと述べるべきだった。謝罪いたします。 – Maciej

+0

@Maciej。 。 。私は、この質問に対する答えと何が関係しているのか分かりません。 –