首页 > 数据库技术 > 详细

Oracle多行记录合并处理

时间:2014-12-27 08:53:46      阅读:188      评论:0      收藏:0      [点我收藏+]

1:效果如下图所示:

技术分享

表T1:

CREATE TABLE T1 
(
  WEEKWORKID VARCHAR2(20) ,
  DD VARCHAR2(20) 
) 

表T2

CREATE TABLE T2 
(
  WEEKWORKID VARCHAR2(20) ,
  NR VARCHAR2(20) 
)

SQL语句:

select t2.weekworkid,t2.nr,T.dd
from t2
left join (
  -- 4筛选结果集
  select weekworkid,max(substr(dd,2))dd
  from(
    -- 3使用sys_connect_by_path生成结果集
    select weekworkid,sys_connect_by_path(dd,,)dd
    from(
      -- 2创建子节点与父节点
      select weekworkid,dd,weekworkid||rn rchild,weekworkid||(rn-1)rfather
      from(
        -- 1对记录添加序号
        select t1.weekworkid,t1.dd,row_number() 
            over(partition by t1.weekworkid order by t1.dd) rn 
        from t1
        where t1.weekworkid in(
          select weekworkid from t2
        )
      )
    )connect by prior rchild = rfather start with rfather like %0
  ) group by weekworkid
)T on t2.weekworkid=T.weekworkid
order by weekworkid

运行结果:

技术分享

Oracle多行记录合并处理

原文:http://www.cnblogs.com/yshyee/p/4187989.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!