用于在Oracle中获取透视的查询

ecfdbz9o  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(122)

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

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

周期的数量是不固定的。我需要一个解决方案,可以科普一组可变的列。有人可以请帮助我在这方面。

u3r8eeie

u3r8eeie1#

您可以使用以下查询获得所需的结果,请注意,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'))

相关问题