Oracle实现列转行

Oracle 递归实现列转行

模拟数据在一列中,以逗号分隔展示

  select ('1,2,3,4') as AA,1 id from DUAL
  union all
  select ('4,5,6,7') as AA,2 id from DUAL
  union all
  select ('7,8,9') as aa,3 id from dual

如下图

在这里插入图片描述

通过递归数据将一列数据转化为行展示

  with TEMP as(
  select ('1,2,3,4') as AA,1 id from DUAL
  union all
  select ('4,5,6,7') as AA,2 id from DUAL
  union all
  select ('7,8,9') as aa,3 id from dual
  )
  select REGEXP_SUBSTR(aa, '[^,]+', 1, level) as bb,  id
           from temp
          where  aa is not null
                    connect by level <= REGEXP_COUNT(AA, '[^,]+')
                    and id= prior id
                   and prior DBMS_RANDOM.value > 0;

如下图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013478983/article/details/112570218