【问题标题】:query to get Pivot in Oracle [duplicate]查询以在 Oracle 中获取 Pivot [重复]
【发布时间】:2020-06-30 07:58:37
【问题描述】:

我有一个表格,数据如下所示

    Task         Project    Amt Period
    -----------  --------   --- ------
    REVENUE 605  90020194   100 APR-20
    IE FTE       90020194   10  APR-20
    REVENUE 605  90020194   100 MAY-20
    REVENUE 605  90020194   100 JUN-20
    REVENUE 605  90020194   100 JUL-20

我需要一个 SQL 查询来给出列中的月份和相应的金额,如下所示

    Task         Project    APR-20  MAY-20  JUN-20  JUL-20
    -----------  --------    ------  ------  ------  ------
    REVENUE 605  90020194   100     0       0       0
    IE FTE       90020194   10      0       0       0
    REVENUE 605  90020194   0       100     0       0
    REVENUE 605  90020194   0       0       100     0
    REVENUE 605  90020194   0       0       0       100 

期间的数量不固定。我需要一个可以处理一组可变列的解决方案。谁能帮我解决这个问题。

【问题讨论】:

标签: sql oracle pivot


【解决方案1】:

您可以使用以下查询获得所需的结果,请注意PIVOT 使用定义的列数,因此您必须事先知道要在查询中使用的时间段。

SELECT * FROM
(SELECT TASK, PROJECT, AMOUNT, PERIOD FROM YOUR_TABLE)
PIVOT
(SUM(AMOUNT) FOR PERIOD IN ('APR-20','MAY-20','JUN-20','JUL-20'))

干杯!!

【讨论】:

  • 在寻求者明确他们的要求之前,发布任何答案确实没有多大意义,特别是对于本网站已经很好地涵盖的主题。
  • 非常感谢您的回复。我不想硬编码这些时间段,因为这些时间段并不是一直固定的。您能否告诉我如何在没有硬编码值的情况下实现这一目标。
  • 你需要使用动态查询!!
猜你喜欢
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 2021-10-20
  • 2012-06-03
  • 2012-02-03
相关资源
最近更新 更多