字符串行转列

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12474069/viewspace-668425/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12474069/viewspace-668425/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值