【问题标题】:How can I write this SQL query [closed]如何编写此 SQL 查询 [关闭]
【发布时间】:2020-06-03 15:26:18
【问题描述】:

我有一个如下的数据库表:

Group   -   Year  -      Value
-------------------------------
Group A     2018         200
Group A     2019         300
Group A     2020         400
Group B     2019         500
Group B     2020         300

我想编写一个 SQL 查询或类似的东西或一个报告工具来生成如下报告:

Group       2018     2019    2020
----------------------------------
Group A      200      300     400
Group B      ----     500     300

我尝试了不同的方法,但仍然不知道该怎么做?任何人都可以帮忙吗?

【问题讨论】:

  • 语法取决于您的数据库。请提供。如果您使用 Postgresql,请使用“crosstab”函数,否则使用“Pivot”

标签: sql reporting


【解决方案1】:

您可以使用条件聚合:

select group,
       sum(case when year = 2018 then value end) as value_2018,
       sum(case when year = 2019 then value end) as value_2019,
       sum(case when year = 2020 then value end) as value_2020
from t
group by group;

请注意,group 是一个非常糟糕的列名称,因为它是一个 SQL 关键字。如果这是实际名称,我建议您更改它。

【讨论】:

  • 嗨,戈登,你以前帮过我,这对我很有帮助。现在我需要以其他方式进行转换:如果我有表: 1. Group 2018 2019 2020 2. Group A 200 300 400 3. Group B ---- 500 300 我需要编写 SQL 查询或类似的东西生成这样的表格: 1. Group - Year - Value 2. Group A 2018 200 3. Group A 2019 300 4. Group A 2020 400 5. Group B 2019 500 6. Group B 2020 300 你能帮忙吗?非常感谢!
  • @Denis 。 . .您应该将此作为一个问题提出。
  • 感谢您的及时评论,我提出了一个新问题,网址是:stackoverflow.com/questions/62648585/…。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-01-19
  • 2015-08-14
  • 1970-01-01
  • 2013-02-01
  • 2012-02-29
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
相关资源
最近更新 更多