Преобразование строк в столбец в PostgreSQL

Я хочу конвертировать строки в столбец в PostgreSQL.Я хочу, чтобы все переменные соответствовали их соответствующему идентификатору.но это не работает.

Введите описание изображения здесь

Ожидаемый Результат:

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.

1 ответ

  1. Может, это поможет.

    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