医院名称           科别            其他小科表                     医技小科别安徽医科大学 儿科             理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 心内科               理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学      神经内科         理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 肾内科         理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 呼吸内科         理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
我要变成:
安徽医科大学  儿科   心内科  神经内科 肾内科  呼吸内科    理疗科、血透中心肿瘤放射科   神经电生理室、超声波室
请问如何实现呢?
注意要消除重复的数据哦!

解决方案 »

  1.   

    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;
      

  2.   

    向1楼学习了,但题目好像不是2个字段,总共应有4个字段,结果是否是4个字段的显示,需要楼主说清楚。
    如果WM_CONCAT(DSITINCT ..)可用。那可参考WITH T1 AS(
    SELECT '安徽医科大学' a,'儿科' AS b, '理疗科、血透中心肿瘤放射科' AS C ,'神经电生理室、超声波室' d FROM dual UNION ALL
    SELECT '安徽医科大学' a,'心内科' AS b, '理疗科、血透中心肿瘤放射科' AS C ,'神经电生理室、超声波室' d FROM dual UNION ALL
    SELECT '安徽医科大学' a,'神经内科' AS b, '理疗科、血透中心肿瘤放射科' AS C ,'神经电生理室、超声波室' d FROM dual UNION ALL
    SELECT '安徽医科大学' a,'肾内科' AS b, '理疗科、血透中心肿瘤放射科' AS C ,'神经电生理室、超声波室' d FROM dual UNION ALL
    SELECT '安徽医科大学' a,'呼吸内科' AS b, '理疗科、血透中心肿瘤放射科' AS C ,'神经电生理室、超声波室' d FROM dual)
    SELECT A,REPLACE(B1,',',' ') B1,REPLACE(C1,',',' ') C1,REPLACE(D1,',',' ') D1
    (SELECT A,
    ROW_NUMBER() OVER(PARTITION BY A ORDER BY B) RANK,
    WM_CONCAT(DISTINCT B) OVER(PARTITION BY A ORDER BY B) AS B1,
    WM_CONCAT(DISTINCT C) OVER(PARTITION BY A ORDER BY B) AS C1,
    WM_CONCAT(DISTINCT D) OVER(PARTITION BY A ORDER BY B) AS D1
    FROM T1)
    WHERE RANK =1
    没装服务器,不能测试!
      

  3.   


    select 医院名称,wm_concat(distinct 科别)||','|| wm_concat(distinct 其他小科表)||','||wm_concat(distinct  医技小科别)
    group by 医院名称;