Oracle行转列的特殊问题
一个表如下:
TB1:
姓名 用户编号 表类型 表码
张三 0001 电表 100.23
张三 0001 水表 56
张三 0001 水表 45
李四 0002 电表 200.45
李四 0002 水表 23
需转换为:
姓名 用户编号 电表 水表 水表
张三 0001 100.23 56 45
李四 0002 200.45 23 无
注:有的人家里有两块水表,有的人家里只有一块水表,还有重名的,用户编号是不重复的。
如何判断第二块水表呢?
[解决办法]
上面的有问题
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