【问题标题】:PostgreSQL Query Using Crosstab使用交叉表的 PostgreSQL 查询
【发布时间】:2019-05-25 07:19:46
【问题描述】:

现在,我倾向于使用 postgreSQL。在研究中,我在 postgreSQL 中发现了 crosstab。我尝试将此功能应用于我的自定义表格,但它不起作用。请帮忙!!

这是我的桌子

 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  |

为了制作该表,我使用交叉表设计了查询,但不起作用!

请告诉我这个问题的查询。

【问题讨论】:

  • 请在发布问题时始终检查格式。它可以在输入字段下方看到。我现在已经为你修好了。另外,您尝试了哪些无效的查询?

标签: postgresql crosstab


【解决方案1】:

你可以不用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 

Demo <> DB Fiddle

如果您正在尝试学习 Crosstab,这个答案真的很棒,并且很好地解释了要使用枢轴使用 Crosstab

【讨论】:

    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 2018-12-13
    • 2022-07-29
    相关资源
    最近更新 更多