des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Postgres crosstab?

Хочу создать представление.
примерно такая база
9rSosfW.png
то есть у analiz_create несколько записей в analiz_data
и нужно "перевернуть" выборку чтобы получить
ATFEApm.png
нужно выбрать все записи из таблицы analiz_data сгруппировав по ид analiz_create

UPD
что-то мне подсказывает что нужно использовать crosstab но вот

select *  from crosstab('SELECT 
                            t1.value,
                            t2.name
                          FROM 
                            analiz_data t1,
                            element t2
                          WHERE
                            t1.elem_id = t2.id   ')
            as (value text, name text);


пишет

ERROR: invalid source data SQL statement DETAIL: The provided SQL must return 3 columns: rowid, category, and values.
  • Вопрос задан
  • 2520 просмотров
Решения вопроса 1
des1roer
@des1roer Автор вопроса
ученье - свет, а неученье - приятный полумрак
select * from 
    crosstab('SELECT 
            t1.analiz_id,
            t1.elem_id,
              t1.value
            FROM 
              a_analiz_data t1
            WHERE
              t1.analiz_id =36
                            ', //analiz_id - общий ид, 
            //elem_id - имя элемента
            //value - отображаемое значение
    '       SELECT 
  elem_id //elem_id - видимо нужен для связи двух таблиц
    FROM 
    a_analiz_data t1
  WHERE                            
     t1.analiz_id = 36')
as (rowid int, att1 text, att2 text, att3 text, att4 text, att5 text, att6 text, att7 text);


было

SELECT 
  t1.value,
  t1.elem_id
FROM 
  a_analiz_data t1
WHERE
  t1.analiz_id =36


G7noe.png

стало

1iQax.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы