2017-01-26 6 views
0

テーブルのデータをフォーマットする必要があるため、別のテーブルにコピーしていますが、コピー中はフォーマットしています。 これを行う方法を今すぐ確認してください。 オリジナル表:Oracle:あるテーブルから別のテーブルにデータをコピーし、コピー中にフォーマットする必要がある

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 

私の最終的なデータは次のように見ている必要があります。

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 

それは同じテーブルまたは異なるテーブルとすることができます。

私はそれを行う方法がわかりません。

答えて

0

このような作業については、PL/SQLを避けてください。 OracleのマニュアルからString aggregation techniquesを参照してください。

あなたはOracle 11gのを使用することができれば、あなたは解決策だ

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 

のようになります...その後、あなたが徹底的に定義していない、あなたの要件を満たすために、もう少し微調整を有することができます。

関連する問題