+ -
当前位置:首页 → 问答吧 → 如何实现简单的列转化

如何实现简单的列转化

时间:2011-11-03

来源:互联网



医院名称 科别 其他小科表 医技小科别

安徽医科大学 儿科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 心内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 神经内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 肾内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 呼吸内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室


我要变成:
安徽医科大学 儿科 心内科 神经内科 肾内科 呼吸内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室


请问如何实现呢?
注意要消除重复的数据哦!

作者: zhoulirong14   发布时间: 2011-11-03

SQL code


WITH T1 AS(
SELECT '安徽医科大学' a,'儿科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室' b FROM dual UNION ALL
SELECT '安徽医科大学' a,'心内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室' b FROM dual UNION ALL
SELECT '安徽医科大学' a,'神经内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室' b FROM dual UNION ALL
SELECT '安徽医科大学' a,'肾内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室' b FROM dual UNION ALL
SELECT '安徽医科大学' a,'呼吸内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室' b FROM dual)
SELECT A,
       REPLACE(WM_CONCAT(DISTINCT REGEXP_SUBSTR(B, '[^ ]+', 1, L)),
               ',',
               ' ') B
  FROM T1, (SELECT LEVEL L FROM DUAL CONNECT BY LEVEL <= 100) T2
 WHERE LENGTH(B) - LENGTH(REPLACE(B, ' ', '')) + 1 >= T2.L
 GROUP BY A;


作者: BenChiM888   发布时间: 2011-11-03

顶一下大奔!!太帅了!
引用 1 楼 benchim888 的回复:
SQL code
WITH T1 AS(
SELECT '安徽医科大学' a,'儿科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室' b FROM dual UNION ALL
SELECT '安徽医科大学' a,'心内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室' b FROM dual UNION ALL
SELECT '安徽医科大学' a,'神经内科 理疗科、……

作者: yixilan   发布时间: 2011-11-03