一个表如下:
TB1:姓名 用户编号 表类型 表码
张三 0001 电表 100.23
张三 0001 水表 56
张三 0001 水表 45
李四 0002 电表 200.45
李四 0002 水表 23需转换为:姓名 用户编号 电表 水表 水表
张三 0001 100.23 56 45
李四 0002 200.45 23 无注:有的人家里有两块水表,有的人家里只有一块水表,还有重名的,用户编号是不重复的。
如何判断第二块水表呢?
TB1:姓名 用户编号 表类型 表码
张三 0001 电表 100.23
张三 0001 水表 56
张三 0001 水表 45
李四 0002 电表 200.45
李四 0002 水表 23需转换为:姓名 用户编号 电表 水表 水表
张三 0001 100.23 56 45
李四 0002 200.45 23 无注:有的人家里有两块水表,有的人家里只有一块水表,还有重名的,用户编号是不重复的。
如何判断第二块水表呢?
解决方案 »
- 跪求!!!JSP+ORACLE实现文件的上传下载完整操作(包括代码和详细注释)
- 关于V$SYSSTAT中的db block gets等参数的含义探讨
- 资料
- 有一个ORACLE 8.1.5版本的 xxx.dbf文件,请问我能不能把这个文件导入到 ORACLE 9i中去打开?
- 一个分组统计问题
- 使用truncate table时遇到的问题.
- Windwos下编写的软件是否可以直接操作UNIX下的oracle?
- 菜鸟高分求救:学生信息管理系统的数据库设计(在线等待)
- 一些常识问题,但是我不太清楚,请大家来讨论。
- 这个查询结果应该怎么得到
- ORACLE 精细访问控制的问题
- 两台HP ProLiant DL380 G7如何做双机热备?
(select user_name,user_id,sum(码表) vla_1,'0' vla_2,'0' vla_3 from your_table where 表类型 = '电表'
union all
select user_name,user_id,0,sum(case when rn = '1' then 码表 else 0 end)sum(case when rn = '2' then 码表 else 0 end)
from (select user_name,user_id ,码表,row_number() over(partition by user_id,表类型 order by 码表 ) rn from your_table )
)
group by
user_name,user_id
select user_name,
user_id,
sum(vla_1),
sum(vla_2),
sum(vla_3)
from
(select user_name,
user_id,
sum(码表) vla_1,
'0' vla_2,
'0' vla_3
from your_table
where 表类型 = '电表'
union all
select user_name,
user_id,
0,
sum(case when rn = '1' then 码表 else 0 end),
sum(case when rn = '2' then 码表 else 0 end)
from (select user_name,
user_id ,
码表,
row_number() over(partition by user_id,表类型 order by 码表 ) rn
from your_table
where 表类型 = '水表')
)
group by
user_name,user_id