当前位置: 代码迷 >> Oracle技术 >> Oracle行转列的特殊有关问题
  详细解决方案

Oracle行转列的特殊有关问题

热度:174   发布时间:2016-04-24 08:39:35.0
Oracle行转列的特殊问题
一个表如下:
TB1:

姓名 用户编号 表类型 表码
张三 0001 电表 100.23
张三 0001 水表 56
张三 0001 水表 45
李四 0002 电表 200.45
李四 0002 水表 23

需转换为:

姓名 用户编号 电表 水表 水表
张三 0001 100.23 56 45
李四 0002 200.45 23 无

注:有的人家里有两块水表,有的人家里只有一块水表,还有重名的,用户编号是不重复的。
如何判断第二块水表呢?

------解决方案--------------------
上面的有问题 

SQL code
select user_name,       user_id,       sum(vla_1),       sum(vla_2),       sum(vla_3) from  M student t WHERE t.stuid IN       (SELECT substr(t1.str,                      instr(t1.str, ',', 1, LEVEL) + 1,                      decode(instr(t1.str, ',', 1, LEVEL + 1),                             0,                             length(str) + 1,                             instr(t1.str, ',', 1, LEVEL + 1)) - instr(t1.str, ',', 1, LEVEL) - 1) s          FROM dual, t1        CONNECT BY LEVE
  相关解决方案