2017-01-14 26 views
0

PostgreSQLで行を列に変換したいのですが、それぞれのid.butに対してすべての変数が機能しないようにします。PostgreSQLの行を列に変換する

enter image description here

予想される出力:

myvar desc fname lname  sdate   edate   id  
title1 desc1 cina jhon 1483920000000 1484524800000  14 
title2 desc2 jhon lname2 1483920000000 1483910000000  16 
title3 desc3 diesel zier 1483920000000 1484524800000  17 



SELECT * FROM crosstab(
'SELECT name, value, id FROM test ORDER BY id') AS (
"myVar" text, "desc" text, "fname" text, "lname" text,"sdate" text,"edate" text, "value" text ,"containerid" bigint); 

エラー: ERROR:無効な戻り値の型 SQL状態:42601 詳細:SQLのROWIDデータ型はROWIDデータ型を返し一致していません。

+0

を期待される結果は何ですか? – McNets

+0

私は編集の質問があります。 – nagi

+0

このグラフを入力してください。写真を貼り付けないでください。単に 'TABLE test;'と打ち込み、ここに出力してください。あなたが本当に気にして、アップボントを望むならば、DDLを貼り付けてください。 'CREATE TABLE AS SELECT'を実行すると、あなたは喜びを得ます。 –

答えて

0

おそらくこれが役立ちます。

ORDER BY 1,2が必要です。実際に

select * 
    from crosstab (
     'select id, name, value 
     from tt1 
     order by 1,2') 
    AS (row_name int, col1 text, col2 text, col3 text, col4 text); 

+----------+-------+--------+--------+--------+ 
| row_name | col1 | col2 | col3 | col4 | 
+----------+-------+--------+--------+--------+ 
| 14 | desc1 | chen | john | title1 | 
+----------+-------+--------+--------+--------+ 
| 15 | desc2 | fname2 | lname2 | title2 | 
+----------+-------+--------+--------+--------+ 
| 16 | desc4 | deiser | ziel | title3 | 
+----------+-------+--------+--------+--------+ 

、列はと命名する必要があります。

...、COL1、COL2、COL3、COL4ここでそれを確認してください:http://rextester.com/MFWAW58518

+0

あなたの例は、順番どおりに動作しません.... –

+1

@EvanCarroll答えを書くと、クロス集計についての私の知識は集計に制限されています。 – McNets

+0

それは私のものです。私はいつも私が欲しいものを手に入れますが、それは私の強みではありません。あなたは、私がこの写真のグラフのどれかを打ち込むことによってやりたいことを超えました。私はそれに対して0許容量が好きです。私はDDLをテキストで作っています。とにかく、人を掘りなさい。これは私たちが自分自身を良くする方法です。それは、ORDER BY 1,2と非常によく関係しているかもしれません。ドキュメントはそれを言います。私は何かを学んだ。私はちょうどあなたのRexsterでそれを観察することができませんでした。 –

関連する問題