现在,我倾向于使用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 |
要创建该表,我使用交叉表设计了查询,但是不起作用!
请让我知道这个问题的查询。
答案 0 :(得分:0)
您可以在没有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
如果您尝试学习Crosstab
,则此答案非常有用,并且可以很好地解释如何进行枢轴使用Crosstab
。