首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

一个数据库分组统计的有关问题

2012-11-01 
一个数据库分组统计的问题数据库中有一张表Test,其表结构如下所示:??job_iddep_iditemnameno0001010900002

一个数据库分组统计的问题

数据库中有一张表Test,其表结构如下所示:??

job_iddep_iditemnameno0001010900002A001?0001010900003A002 ?0001010901001B003?0002020900004A005?0002020902003C004?0003030901002B004?0003030901004B005?

?

规则:其实意思就是让一组中item为002的记录所对应的name优先做no的前缀
1、先以job_id,dep_id分组记录;
2、检查同一组记录中有沒有item为002的记录,如果存在,這一组记录的no都是以item为002这条记录对应的name+当前日期,这一组记录的no都相同;如果一组中不存在item为002的记录那么可以隨便挑一个同组中name字段的值做no的前缀。

?

其结果如下所示:?

job_iddep_iditemnameno0001010900002A001A001 -2008-12-25 09:12:060001010900003A002 A001 -2008-12-25 09:12:060001010901001B003B003-2008-12-25 09:12:060002020900004A005A005-2008-12-25 09:12:060002020902003C004C004-2008-12-25 09:12:060003030901002B004B004 -2008-12-25 09:12:060003030901004B005B004 -2008-12-25 09:12:06

?

?

其Sql语句为:

?

select tt.job_id,tt.dep_id,tt.item,tt.name,     nvl2(t2.no,t2.no,concat(tt.name || '-', to_char(sysdate,'yyyy-mm-dd HH24:mm:ss'))) no  from test tt,       (select t1.job_id,t1.dep_id,t1.item,t1.name,               concat(t1.name || '-',to_char(sysdate, 'yyyy-mm-dd HH24:mm:ss')) no          from test t1,               (select job_id sj, dep_id sd                  from test t                 group by job_id, dep_id                having count(*) > 1) s         where t1.job_id = s.sj           and t1.dep_id = s.sd           and t1.item = '002') t2 where tt.job_id = t2.job_id(+)   and tt.dep_id = t2.dep_id(+)

?

热点排行