Функция кросс-таблицы в Postgres, возвращающая вывод на одну строку, когда я ожидаю несколько строк
У меня в настоящее время есть столm
следующего формата:
id scenario period ct
2 1 1 1
2 1 2 1
2 1 3 1
2 1 4 1
2 2 1 1
2 2 2 1
2 2 3 1
2 2 4 1
2 3 1 1
2 3 2 1
2 3 3 1
2 3 4 1
Я хочу создать следующую таблицу:
id scenario period 1 2 3 4
2 1 1 1
2 1 2 1
2 1 3 1
2 1 4 1
2 2 1 1
2 2 2 1
2 2 3 1
2 2 4 1
2 3 1 1
2 3 2 1
2 3 3 1
2 3 4 1
Расширение tablefunc уже создано в моей базе данных Postgres. В настоящее время я пытаюсь использоватьcrosstab()
функция для завершения оси. Тем не менее, я получаю таблицу, которая выглядит следующим образом:
id scenario period 1 2 3 4
2 1 1 1 1 1 1
Запрос, который я пробовал:
SELECT * FROM crosstab(
'SELECT id, scenario, period, ct FROM m
ORDER BY 1',
'SELECT DISTINCT period FROM m
ORDER BY 1')
AS (id, scenario, period, 1, 2, 3, 4);