2017-01-26 3 views
0

Ich muss Daten in einer Tabelle formatieren, so dass ich es in eine andere Tabelle kopieren und während des Kopierens formatiere ich es. Jetzt sicher, wie es geht. Original-Tabelle:Oracle: Müssen Daten von einer Tabelle in eine andere kopieren und beim Kopieren formatieren

sales_offer_id sales_offer_name, sales_offer_description PRIORITY ADE_PRIORITIZED deployment_date FROM_ENV 
121  SO121  SO121 Desc121  111  Y  01-JAN-17 0 
123  SO1   SO1 Desc1   111  Y  01-JAN-01 0 
123  SO1   SO1 Desc2   111  Y  01-FEB-17 2 
123  SO3   SO1 Desc1   111  Y  01-JAN-17 3 
123  SO2   SO1 Desc1   111  Y  21-JAN-17 1 
987  SO1   SO1_Desc1   111  Y  22-JAN-17 3 

Meine letzten Daten sollten wie suchen:

sales_offer_id sales_offer_name,     sales_offer_description    PRIORITY  ADE_PRIORITIZED deployment_date FROM_ENV 
121  SO121       SO121 Desc121     111   Y  01-JAN-17 0 
123  SO1;SO3 eff(01/01/17);SO2 eff(01/21/17) SO1 Desc1;SO1 Desc2 eff(02/01/17) 111   Y  01-FEB-17 0 
987  SO1       SO1_Desc1     111   Y  22-JAN-17 3 

Es kann einen Tisch oder anderer Tisch sein.

Ich bin mir nicht sicher, wie es geht.

Antwort

0

Versuchen Sie, PL/SQL für eine solche Arbeit zu vermeiden. Lesen Sie über die Oracle-Dokumentation über String aggregation techniques.

z.B. wenn Sie Oracle 11g verwenden können, sind Sie Lösung wie

select sales_offer_id 
    , listagg(sales_offer_name||' eff('||deployment_date ||')' , '|') 
     within group (order by sales_offer_id) as sales_offer_description 
    , PRIORITY 
    , ADE_PRIORITIZED 
    , max(FROM_ENv) 
    , max(deployment_date)  
-- your data sample 
from (
     select 121     sales_offer_id 
      , 'SO121'    sales_offer_name 
      , 'SO121 Desc121'  sales_offer_description 
      , 111     PRIORITY 
      , 'Y'     ADE_PRIORITIZED 
      , '01-JAN-17'   deployment_date 
      , 0      FROM_ENV 
                    from dual 
union select 123, 'SO1' , 'SO1 Desc1' , 111, 'Y', '01-JAN-01', 0 from dual 
union select 123, 'SO1' , 'SO1 Desc2' , 111, 'Y', '01-FEB-17', 2 from dual 
union select 123, 'SO3' , 'SO1 Desc1' , 111, 'Y', '01-JAN-17', 3 from dual 
union select 123, 'SO2' , 'SO1 Desc1' , 111, 'Y', '21-JAN-17', 1 from dual 
union select 987, 'SO1' , 'SO1_Desc1' , 111, 'Y', '22-JAN-17', 3 from dual 
) group by sales_offer_id 
    , PRIORITY 
    , ADE_PRIORITIZED 

aussehen sollte ... dann können Sie ein wenig mehr Zwicken, um Ihre Anforderung zu erfüllen, die Sie nicht gründlich definiert.

Verwandte Themen