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

 

posted @ 2015-08-13 09:54  GD_熬夜  阅读(31589)  评论(1编辑  收藏  举报