Оператор SQL, переданный как параметр в crosstab()
, функция должна возвращать один столбец row_name, один столбец категории и один столбец значений. В вашем случае это qmonth2, tag1 и sum1.
Это ваш запрос, учитывая, что sum1
является целым числом, qmonth2
и tag1
являются текстом:
select *
from crosstab(
'select qmonth2, tag1, sum1
from public."chartdata_chart3"
') AS ct(qmonth2 text, name1 int, name2 int, name3 int;
Выход:
qmonth2 | name1 | name2 | name3
---------+-------+-------+-------
MAY | -166 | -86 | 35
JUN | -102 | -32 | -75
AVG | -135 | -52 | -17
См. руководство для получения дополнительной информации и примеров того, как crosstab
работает.
Кроме того, помните, что присвоение имен столбцам / таблицам в кавычках усложняет написание каждого SQL-запроса, поэтому вам лучше не делать этого:)