医院名称 科别 其他小科表 医技小科别安徽医科大学 儿科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 心内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 神经内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 肾内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 呼吸内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
我要变成:
安徽医科大学 儿科 心内科 神经内科 肾内科 呼吸内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
请问如何实现呢?
注意要消除重复的数据哦!
安徽医科大学 心内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 神经内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 肾内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
安徽医科大学 呼吸内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
我要变成:
安徽医科大学 儿科 心内科 神经内科 肾内科 呼吸内科 理疗科、血透中心肿瘤放射科 神经电生理室、超声波室
请问如何实现呢?
注意要消除重复的数据哦!
解决方案 »
- oracle一下情况记日志吗?
- 出现错误:java.sql.SQLException: ORA-01830: 日期格式图片在转换整个输入字符串之前结束
- oracle em的问题
- 求一简单的SQL写法(因为数据量较大,请尽量考虑优化)
- 急,救命呀,Oracle中怎么计算日期?
- oracel建库
- Data类型的数据怎么插入啊?
- 假设我的表中有10000条记录,如何每次只读出表的100条记录,分100次读完啊?第一次可以用 select * from tab1 where rownum<101;第二次怎
- linux7 安装oracleasm报错
- 建的试图查询很快一旦加了where就半天都查不出数据
- 求老鸟解答
- 实现细粒度数据访问
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;
如果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
没装服务器,不能测试!
select 医院名称,wm_concat(distinct 科别)||','|| wm_concat(distinct 其他小科表)||','||wm_concat(distinct 医技小科别)
group by 医院名称;