2016-04-10 8 views
0

おはようございます!私はSQLiteでピボットを作る方法を知りたい。私はこのような構造を持つテーブルがある:SQLiteのピボット(行を列に変換)

IDUR IDPIX 

2345 4567 

2345 4568 

2345 4569 

私はこれを取得する必要があります:

IDUR IDPIX1 IDPIX2 IDPIX3 

2345 4567 4568 4569 

は誰も私はSQLiteのを使用して、その取得するためのいくつかのヒントを与えて助けることができませんの?事前に

おかげ

答えて

0

はSQLiteはので、これは困難であるピボット、row_number()(または同様のもの)をサポートしていません。おそらくgroup_concat()で十分です:

select idur, group_concat(IDPIX) as IXPIXes 
from t 
group by idur; 

これは簡単です。しかし、それはあなたが求めているものを正確に生み出すものではありません。

EDIT:

select idur, 
     max(case when seqnum = 1 then IDPIX end) as IDPIX_1, 
     max(case when seqnum = 2 then IDPIX end) as IDPIX_2, 
     max(case when seqnum = 3 then IDPIX end) as IDPIX_3 
from (select t.*, row_number() over (partition by idur order by NULL) as seqnum 
     from t 
    ) t 
group by idur; 

MySQLでは、最も簡単な方法は、変数を使用します。

のPostgresでは、あなたは条件付き集約かcrosstab()を使用します。

+0

フィールドへの値は行番号ではなく、2345,4567,4568および4569は各フィールドの内容文字列値です。あなたの答えによって、ありがとうございました。 –

+0

mysqlやpostgresqlのような別のツールを使って、それをやる方法を知っていますか? –

関連する問題