bugfix> oracle > 投稿

Oracleでvarcharフィールドを複数の行に分割するためのヘルプが必要です。 例: 指定されたデータサンプルでは、​​注文番号は一意です。サービスコードを複数の行に分割したいのですが、各サービスコードは|で区切られています。

データサンプル

ありがとう!

回答 1 件
  • これが例です。

    サンプルデータは1行目から5行目にあります(すでにテーブルにあります。入力しないでください)。ジョブを実行するクエリは6行目から始まります。

    SQL> with test (order_no, datum, service_cd) as
      2    (select 17, date '2016-11-30', '2106|2100|2105'      from dual union all
      3     select 23, date '2016-11-30', '2043|2020|2023|2047' from dual union all
      4     select 67, date '2016-11-30',  null                 from dual
      5    )
      6  select order_no,
      7         datum,
      8         regexp_substr(service_cd, '[^|]+', 1, column_value) val
      9  from test cross join
     10    table(cast(multiset(select level from dual
     11                        connect by level <= regexp_count(service_cd, '\|') + 1
     12                       ) as sys.odcinumberlist))
     13  order by order_no, datum, column_value;
      ORDER_NO DATUM      VAL
    ---------- ---------- ----------
            17 30/11/2016 2106
            17 30/11/2016 2100
            17 30/11/2016 2105
            23 30/11/2016 2043
            23 30/11/2016 2020
            23 30/11/2016 2023
            23 30/11/2016 2047
            67 30/11/2016
    8 rows selected.
    SQL>
    
    

あなたの答え