Проблема с запросом сводной таблицы. Я использую это в django как необработанный запрос к базе данных postgres - PullRequest
0 голосов
/ 11 марта 2020
SELECT Name,'1','2','3'
FROM (
    SELECT
        database_jobdefect.defect_id,
        database_session.name,
        count(*) AS cu
    FROM
        database_session IN ner
        JOIN database_job ON database_job.session_id = database_session.id
        INNER JOIN database_jobdefect ON database_job.id = database_jobdefect.job_id
    GROUP BY
        database_session.name,
        database_jobdefect.defect_id) PIVOT (count(database_session.name)
        FOR database_jobdefect.defect_id IN ([1],[2],[3]))

Ошибка, которую я получаю:

"ProgrammingError: синтаксическая ошибка в или около" ("LINE 1: ... on.name, database_jobdefect.defect_id) PIVOT (count ( база данных _... "

1 Ответ

1 голос
/ 11 марта 2020

Postgres не поддерживает синтаксис pivot. Просто используйте условную агрегацию:

SELECT Name,
       COUNT(*) FILTER (WHERE djd.defect_id = 1) THEN defect_1,
       COUNT(*) FILTER (WHERE djd.defect_id = 2) THEN defect_2,
       COUNT(*) FILTER (WHERE djd.defect_id = 3) THEN defect_3
FROM database_session ds JOIN
     database_job dj 
     ON dj.session_id = ds.id JOIN
        database_jobdefect djd
     ON dj.id = djd.job_id 
GROUP BY ds.name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...