1.数据如下 :
体检号 科室 项目 结果
0000000015 一般情况 身高 1
0000000015 一般情况 体重 2
0000000015 一般情况 腿型 正常
0000000015 一般情况 脚趾 平足
0000000015 一般情况 胸围 33
0000000015 眼科 左眼视力 a
0000000015 眼科 右眼视力 22
0000000015 检验科 低钠试
0000000015 检验科 氨苯喋啶试 6
0000000015 B超 血型 A型
0000000015 B超 血压 6
想要的结果如下
0000000015 眼科 左眼视力a右眼视力22
0000000015 一般情况 身高1体重2腿型正常
WITH fis AS (
SELECT '0000000015' V1, '一般情况' V2, '身高' V3, '1' V4
FROM DUAL
UNION ALL
SELECT '0000000015', '一般情况', '体重', '2'
FROM DUAL
UNION ALL
SELECT '0000000015', '一般情况', '腿型', '正常'
FROM DUAL
UNION ALL
SELECT '0000000015', '一般情况', '脚趾', '平足'
FROM DUAL
UNION ALL
SELECT '0000000015', '一般情况', '胸围', '33'
FROM DUAL
UNION ALL
SELECT '0000000015', '眼科', '左眼视力', 'a'
FROM DUAL
UNION ALL
SELECT '0000000015', '眼科', '右眼视力', '22'
FROM DUAL
UNION ALL
SELECT '0000000015', '检验科', '低钠试', NULL
FROM DUAL
UNION ALL
SELECT '0000000015', '检验科', '氨苯喋啶试', '6'
FROM DUAL
UNION ALL
SELECT '0000000015', 'B超', '血型', 'A型'
FROM DUAL
UNION ALL
SELECT '0000000015', 'B超', '血压', '6' FROM DUAL )
SELECT v1,v2,max(sys_connect_by_path(v3,','))
FROM
(SELECT v1,v2,v3||v4 v3,row_number() over (PARTITION BY v1,v2 ORDER BY v3) rn FROM fis )
START WITH rn =1
CONNECT BY PRIOR rn=rn-1 AND PRIOR v1=v1 AND PRIOR v2=v2
GROUP BY v1,v2
体检号 科室 项目 结果
0000000015 一般情况 身高 1
0000000015 一般情况 体重 2
0000000015 一般情况 腿型 正常
0000000015 一般情况 脚趾 平足
0000000015 一般情况 胸围 33
0000000015 眼科 左眼视力 a
0000000015 眼科 右眼视力 22
0000000015 检验科 低钠试
0000000015 检验科 氨苯喋啶试 6
0000000015 B超 血型 A型
0000000015 B超 血压 6
想要的结果如下
0000000015 眼科 左眼视力a右眼视力22
0000000015 一般情况 身高1体重2腿型正常
WITH fis AS (
SELECT '0000000015' V1, '一般情况' V2, '身高' V3, '1' V4
FROM DUAL
UNION ALL
SELECT '0000000015', '一般情况', '体重', '2'
FROM DUAL
UNION ALL
SELECT '0000000015', '一般情况', '腿型', '正常'
FROM DUAL
UNION ALL
SELECT '0000000015', '一般情况', '脚趾', '平足'
FROM DUAL
UNION ALL
SELECT '0000000015', '一般情况', '胸围', '33'
FROM DUAL
UNION ALL
SELECT '0000000015', '眼科', '左眼视力', 'a'
FROM DUAL
UNION ALL
SELECT '0000000015', '眼科', '右眼视力', '22'
FROM DUAL
UNION ALL
SELECT '0000000015', '检验科', '低钠试', NULL
FROM DUAL
UNION ALL
SELECT '0000000015', '检验科', '氨苯喋啶试', '6'
FROM DUAL
UNION ALL
SELECT '0000000015', 'B超', '血型', 'A型'
FROM DUAL
UNION ALL
SELECT '0000000015', 'B超', '血压', '6' FROM DUAL )
SELECT v1,v2,max(sys_connect_by_path(v3,','))
FROM
(SELECT v1,v2,v3||v4 v3,row_number() over (PARTITION BY v1,v2 ORDER BY v3) rn FROM fis )
START WITH rn =1
CONNECT BY PRIOR rn=rn-1 AND PRIOR v1=v1 AND PRIOR v2=v2
GROUP BY v1,v2
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12474069/viewspace-668425/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12474069/viewspace-668425/