PostgreSQL: Есть ли какой-либо способ создать перекрестную таблицу, подобную этой? Помогите, спасибо

#postgresql #crosstab #postgresql-13 #postgres-crosstab

Вопрос:

Я все еще новичок в PostgreSQL и хотел бы сделать перекрестную таблицу из этой таблицы здесь: исходная таблица

Я хотел бы сделать перекрестную таблицу, чтобы она выглядела так (создана с помощью ручной вставки, без перекрестной таблицы): целевой результат

Это была моя попытка сделать перекрестную таблицу исходной таблицы, однако я понятия не имею, как включить столбец «total_y».:

 select * from crosstab(
   'SELECT name, date, attendance
    FROM table_test
    ORDER BY 1
') as ct (
   "name" text, 
   "2021-04-03" text,
   "2021-03-04" text,
   "2021-03-05" text)
 

Результат с приведенным выше кодом: результат (обратите внимание, что нет столбца «total_y»).

Я попытался добавить столбец «total_y»

 select * from crosstab(
    'SELECT name, date, attendance, total_y
     FROM table_test
     ORDER BY 1
') as ct (
     "name" text, 
     "2021-04-03" text,
     "2021-03-04" text,
     "2021-03-05" text,
     "total_y" integer)
 

Однако он вернет ошибку:

 ERROR:  invalid source data SQL statement
DETAIL:  The provided SQL must return 3 columns: rowid, category, and values.
SQL state: 22023
 

Как мне исправить запрос перекрестной таблицы, чтобы он возвращал нужную таблицу? Как показано на рисунке «целевой результат»?

Большое вам спасибо за помощь!