2017-01-14 3 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); 

Ошибка: ОШИБКА: неверный тип возвращаемого SQL состояние: 42601 деталь: SQL ROWID тип данных не соответствует возвращать RowId тип данных.

+0

что ожидаемый результат? – McNets

+0

У меня есть вопрос редактирования. – nagi

+0

Пожалуйста, введите этот график. Не вставляйте изображения. Просто введите 'TABLE test;' и поставьте этот вывод здесь. Еще лучше, если вы действительно заботитесь и хотите upvotes. Вставьте 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. –