oracle 逗号分割,列转行,行转列

时间:2023-03-09 01:15:18
oracle 逗号分割,列转行,行转列

SQL代码 列转行

select
REGEXP_SUBSTR(a.rolecode ,'[^,]+',1,l)
rolecode
from (
select 'a,aa,aaa' rolecode from dual
) a,
(SELECT LEVEL l FROM DUAL CONNECT BY LEVEL<=100) b
WHERE l <=LENGTH(a.rolecode) - LENGTH(REPLACE(rolecode,','))+1

或者

with a as (select 'ABC,AA,AD,ABD,JI,CC,ALSKD,ALDKDJ' id from dual)
select regexp_substr(id,'[^,]+',1,rownum) id from a
connect by rownum <= length(regexp_replace(id,'[^,]+'))

SQL代码 行转列

select name,coures,to_char(wmsys.wm_concat(xxx.score)) c
from (select '小明' name,'语文' coures,90 score from dual
union all
select '小明' name,'语文' coures,91 score from dual
union all
select '小明' name,'数学' coures,90 score from dual
union all
select '小明' name,'数学' coures,91 score from dual) xxx group by xxx.name,coures