Запрос PostgreSQL с использованием кросс-таблицы - PullRequest
0 голосов
/ 27 декабря 2018

Теперь я склоняюсь к postgreSQL.В ходе исследования я обнаружил кросс-таблицу в postgreSQL.Я пытался применить эту функцию к своему заказному столу, но она не работает.Пожалуйста, помогите !!

Это моя таблица

 year | type     | count 
------+----------+----
 2015 | AS       |  6
 2015 | HY       |  6
 2015 | KR       |  6
 2015 | SE       |  6
 2016 | AS       |  2
 2016 | HY       |  2
 2016 | KR       |  2
 2016 | SE       |  2
 2017 | AS       |  1
 2017 | HY       |  1
 2017 | KR       |  1
 2017 | SE       |  1
 2018 | AS       |  2
 2018 | HY       |  2
 2018 | KR       |  2
 2018 | SE       |  2

Я хочу изменить эту таблицу следующим образом

year |  AS  |  HY  |  KR  |  SE  |
----------------------------------
2015 |   6  |   6  |   6  |   6  |
2016 |   2  |   2  |   2  |   2  |
2017 |   1  |   1  |   1  |   1  |
2018 |   2  |   2  |   2  |   2  |

Чтобы создать эту таблицу, я разработал запрос с использованием кросс-таблицы, но доза не работает!

Пожалуйста, дайте мне знать вопрос этой проблемы.

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете достичь этого без Crosstab, вы можете использовать функцию Aggregate.

Запрос:

select 
  year,
  max(counts) filter (where type = 'AS') as "AS",
  max(counts) filter (where type = 'HY') as "HY",
  max(counts) filter (where type = 'KR') as "KR",
  max(counts) filter (where type = 'SE') as "SE"
from
  tbl
group by
  year
order by 
  year asc 

Демо<> DB Fiddle

И если вы попробуете научиться Crosstab, этот ответ действительно хорош и действительно хорошо объясняет, как использовать сводные данные Crosstab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...