Skip to Main Content

SQL & PL/SQL

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!

Dynamic Pivot using dates Oracle 11g

NSK2KSNOct 19 2015 — edited Oct 19 2015

Hi All,

Can you please tell me if we can achieve below requirement using only PIVOT.

table in data:

   

ItemLocItem_Loc_DateQty
I1L119-Oct-1510
I1L120-Oct-1530
I1L126-Oct-155
I1L219-Oct-158
I1L226-Oct-1515
I1L230-Oct-1512

Expected Output:

  

ItemLoc19-Oct-1520-Oct-1521-Oct-1522-Oct-1523-Oct-1524-Oct-1525-Oct-1526-Oct-1527-Oct-1528-Oct-1529-Oct-1530-Oct-15
I1L11030nullnullnullnullnull5nullnullnullnull
I1L28nullnullnullnullnullnull15nullnullnull12

that is pick the minimum and maximum date in the table and set them as column names for every item and loc combination.

In the above case for Item I1 and Loc L1 minimum date is 19-Oct-2015 and maximum date is 26-Oct-2015

In the above case for Item I1 and Loc L2 minimum date is 19-Oct-2015 and maximum date is 30-Oct-2015


So with the data is there in system minimum date is 19-Oct-2015 and maximum date is 30-Oct-2015.


in future more item and loc combinations will be adding and dates also may vary.

so am looking if we can get the dynamic columns based on the data with PIVOT in oracle.

WITH T1

     AS (SELECT 'I1' ITEM,

                'L1' LOC,

                TO_DATE ('19-OCT-2015', 'DD-MON-RRRR') ITEM_LOC_DATE,

                10 QTY

           FROM DUAL

         UNION ALL

         SELECT 'I1' ITEM,

                'L1' LOC,

                TO_DATE ('20-OCT-2015', 'DD-MON-RRRR') ITEM_LOC_DATE,

                30 QTY

           FROM DUAL

         UNION ALL

         SELECT 'I1' ITEM,

                'L1' LOC,

                TO_DATE ('26-OCT-2015', 'DD-MON-RRRR') ITEM_LOC_DATE,

                5 QTY

           FROM DUAL

         UNION ALL

         SELECT 'I1' ITEM,

                'L2' LOC,

                TO_DATE ('19-OCT-2015', 'DD-MON-RRRR') ITEM_LOC_DATE,

                8 QTY

           FROM DUAL

         UNION ALL

         SELECT 'I1' ITEM,

                'L2' LOC,

                TO_DATE ('26-OCT-2015', 'DD-MON-RRRR') ITEM_LOC_DATE,

                15 QTY

           FROM DUAL

         UNION ALL

         SELECT 'I1' ITEM,

                'L2' LOC,

                TO_DATE ('30-OCT-2015', 'DD-MON-RRRR') ITEM_LOC_DATE,

                12 QTY

           FROM DUAL)

SELECT *

  FROM T1;

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Nov 16 2015
Added on Oct 19 2015
2 comments
953 views