Skip to Main Content

APEX

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Function returning PLSQL Pivot Report

Udit NagpalApr 22 2019 — edited Apr 22 2019

Hi All,

I have created a PLSQL function returning classic report which is a pivot report using below query:

DECLARE

  l_pivot_cols VARCHAR2(4000);

  l_pivot_qry VARCHAR2(4000);

BEGIN

  SELECT ''''||listagg(MONTH_YEAR, ''',''') within group(order by MONTH_YEAR)||''''

    INTO l_pivot_cols from

    (

SELECT TO_CHAR(TO_DATE(DC_DATE, 'DD-MM-YYYY HH24:MI:SS'),'MON-YYYY') MONTH_YEAR

FROM dc_cats_data_2019

WHERE DC_NETWORK= 'BC000248P01E'--:P8_PROJECT_CODE

GROUP BY TO_CHAR(TO_DATE(DC_DATE, 'DD-MM-YYYY HH24:MI:SS'),'MON-YYYY')

);

  l_pivot_qry :=

        'select * from ( '

     || 'select

     SUM(DC_HOURS) DC_HOURS,

            DC_ACTIVITY,TO_CHAR(TO_DATE(DC_DATE,''DD-MM-YYYY HH24:MI:SS''),''MON-YYYY'') MON_YEAR

            FROM dc_cats_data_2019'

          ||'   WHERE DC_NETWORK ='''

          || :P8_PROJECT_CODE

          || ''''

||'GROUP BY TO_CHAR(TO_DATE(DC_DATE,''DD-MM-YYYY HH24:MI:SS''),''MON-YYYY''),DC_ACTIVITY'

     || ') '

     || 'pivot ( SUM(nvl(DC_HOURS,0)) for MON_YEAR in ('||l_pivot_cols||') )' ;

--EXECUTE IMMEDIATE l_pivot_qry;

  RETURN l_pivot_qry;

END;

It works perfect when I hard code value of  project code in the bold part of query however when I try to make the it dynamic by passing a item it is not showing any pivot columns.

Any suggestions would be really appreciated.

Best Regards.

This post has been answered by fac586 on Apr 22 2019
Jump to Answer

Comments

Post Details

Added on Apr 22 2019
2 comments
542 views