Функция кросс-таблицы в 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);

Ответы на вопрос(1)

Ваш ответ на вопрос