1 Reply Latest reply on Feb 18, 2018 7:47 AM by user447496

    How do I use LISTAGG in OWB ?

    user447496

      How do I use LISTAGG in OWB ?

       

      Here is the code that Works In SQLDeveloper

       

      Now I need to use LISTAGG in Oracle Warehouse Builder

       

      What I need to do is CONCAT all the ITEM_DESC into one for each ITEM_NUMBER

       

      -- The Result

      — is a CONCAT of all the ITEM_DESC TOGETHER for EACH ITEM_NUMBER

      — instead of the current 15 record who has ITEM_DESC split for one ITEM_NUMBER.

       

        CREATE TABLE "LISTAGG_TEST"

         ( "ITEM_NUMBER" NUMBER(11,0),

        "LINE_NUMBER" NUMBER(5,0),

        "ITEM_DESC" Varchar2(150 Byte)

         );

        

      REM INSERTING into LISTAGG_TEST

      SET DEFINE OFF;

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,1,' Elle lui dit qu''elle a lâché prise sur les événements et qu''elle saura s''adapter à toutes éventualités. Hélène est fière de son');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,2,' amie et l''invite à un week-end d''escapade, mais la conversation est perturbée lorsqu''Hélène trouve un flacon de pilules. Rachel');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,3,' s''empresse de le jeter à la poubelle et de rassurer son amie. Hélène et Étienne discutent de l''état de Rachel et ce dernier sèm');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,4,'e le doute dans l''esprit d''Hélène. Elle retourne immédiatement chez son amie, mais Rachel ne s''y trouve pas. Hélène est très inq');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,5,'uiète et hésite à ameuter tous ses proches. Elle se rend à son condo avec Étienne et ils découvrent deux lettres écrites par Rac');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,6,'hel. Ils alertent les policiers. Rachel a-t-elle commis l''irréparable ? Florence prend l''initiative d''organiser un souper de fam');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,7,'ille et fait appel à un service de traiteur. William la prévient que Julie n''aime pas trop ce genre de fla fla. Florence n''en fa');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,8,'it qu''à sa tête et insiste pour que tout le monde soit présent. Julie est contrariée lorsqu''elle découvre la surprise. William l');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,9,'a convainc de jouer le jeu, mais l''ambiance est un peu tendue pendant le repas. Florence impose son règne et ses désirs au sein ');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,10,'de la famille Harrison et Julie n''apprécie par l''attitude de sa mère, contrairement à ses enfants qui profitent de la soirée. Ju');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,11,'lie trouve du réconfort auprès de William et tous les deux admettent qu''ils ont hâte de retrouver leur petite vie tranquille. Ré');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,12,'janne insiste pour que Stéphanie porte plainte contre Malcom. Celle-ci est contrainte de dénoncer son ex et d''assumer les conséq');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,13,'uences. Sacha se présente à la maison de ses parents et cuisine son père jusqu''à ce qu''il lui avoue qu''il a échangé un baiser av');

      Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (123456,14,'ec Stéphanie. Sacha conseille à son père mettre un terme immédiatement à cette histoire pour ne pas que Stéphanie s''emballe. Phi');

      Insert Into Listagg_Test (Item_Number,Line_Number,Item_Desc) Values (123456,15,'lippe lui donne rendez-vous pour annoncer à Stéphanie qu''il n''y aura pas de suite. Celle-ci est peinée et insultée.');

       

      -- The Sélect Works Very Well with the correct results.

      -- Now, I need to do the same thing in OWB

      Select LISTAGG(Item_Desc, ' ') Within Group (Order By ITEM_NUMBER) "ITEM_DESC"

      From LISTAGG_TEST

      ORDER BY ITEM_NUMBER;

       

      -- The Result

      — is a CONCAT of all the ITEM_DESC TOGETHER for EACH ITEM_NUMBER

      — instead of the current 15 record who has ITEM_DESC split for one ITEM_NUMBER.

        • 1. Re: How do I use LISTAGG in OWB ?
          user447496

          THE SOLUTION AND USING A VIEW AS A WORKAROUND FOR OWB

           

          -- Adding 2 records to LISTAGG_TEST to make it more interesting

          Insert Into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) Values (300000,1,'MAX TEST');

          Insert into LISTAGG_TEST (ITEM_NUMBER,LINE_NUMBER,ITEM_DESC) values (100000,1,'MIN TEST');

           

           

          -- The WINNING SOLUTION

          -- I read that the LISTAGG does not work directly in OWB

          -- So I made a view to make this work.

          -- The final View that uses the LISTAGG command

          -- to display our data or populate our table

          CREATE OR REPLACE VIEW VIEW_LISTAGG_RESULT AS SELECT ITEM_NUMBER, LISTAGG(ITEM_DESC, '') WITHIN GROUP (ORDER BY LINE_NUMBER) "LINE_NUMBER"

          From LISTAGG_TEST

          Group By ITEM_NUMBER;

           

           

          -- RESULT TABLE

          -- Will contain the results from

          -- the data that come from the view

           

            CREATE TABLE "LISTAGG_TEST_RESULT"

             ( "ITEM_NUMBER" NUMBER,

            "ITEM_DESC" VARCHAR2(4000 BYTE)

             );

           

          -- Here is the final Winning Results

          -- expprted as INSERTS from the LISTAGG_TEST_RESULT table

           

          REM INSERTING into LISTAGG_TEST_RESULT

          SET DEFINE OFF;

          Insert into LISTAGG_TEST_RESULT (ITEM_NUMBER,ITEM_DESC) values (100000,'MIN TEST');

          Insert into LISTAGG_TEST_RESULT (ITEM_NUMBER,ITEM_DESC) values (123456,' Elle lui dit qu''elle a lâché prise sur les événements et qu''elle saura s''adapter à toutes éventualités. Hélène est fière de son amie et l''invite à un week-end d''escapade, mais la conversation est perturbée lorsqu''Hélène trouve un flacon de pilules. Rachel s''empresse de le jeter à la poubelle et de rassurer son amie. Hélène et Étienne discutent de l''état de Rachel et ce dernier sème le doute dans l''esprit d''Hélène. Elle retourne immédiatement chez son amie, mais Rachel ne s''y trouve pas. Hélène est très inquiète et hésite à ameuter tous ses proches. Elle se rend à son condo avec Étienne et ils découvrent deux lettres écrites par Rachel. Ils alertent les policiers. Rachel a-t-elle commis l''irréparable ? Florence prend l''initiative d''organiser un souper de famille et fait appel à un service de traiteur. William la prévient que Julie n''aime pas trop ce genre de fla fla. Florence n''en fait qu''à sa tête et insiste pour que tout le monde soit présent. Julie est contrariée lorsqu''elle découvre la surprise. William la convainc de jouer le jeu, mais l''ambiance est un peu tendue pendant le repas. Florence impose son règne et ses désirs au sein de la famille Harrison et Julie n''apprécie par l''attitude de sa mère, contrairement à ses enfants qui profitent de la soirée. Julie trouve du réconfort auprès de William et tous les deux admettent qu''ils ont hâte de retrouver leur petite vie tranquille. Réjanne insiste pour que Stéphanie porte plainte contre Malcom. Celle-ci est contrainte de dénoncer son ex et d''assumer les conséquences. Sacha se présente à la maison de ses parents et cuisine son père jusqu''à ce qu''il lui avoue qu''il a échangé un baiser avec Stéphanie. Sacha conseille à son père mettre un terme immédiatement à cette histoire pour ne pas que Stéphanie s''emballe. Philippe lui donne rendez-vous pour annoncer à Stéphanie qu''il n''y aura pas de suite. Celle-ci est peinée et insultée.');

          Insert into LISTAGG_TEST_RESULT (ITEM_NUMBER,ITEM_DESC) values (300000,'MAX TEST');