delete from T T1
where exists (select 1 from T WHERE 编号=T1.编号 and 日期>T1.日期)

解决方案 »

  1.   

    上面给出的是删除其他记录的语句,如果只是查询,把exists 改为not exists即可
    select * from T T1
    where not exists (select 1 from T WHERE 编号=T1.编号 and 日期>T1.日期)
      

  2.   

    查询还可以考虑用分析函数
    select 编号,
    max(项1)keep(dense_rank last order by 日期) 项1,
    max(项2 )keep(dense_rank last order by 日期) 项2
    max(日期)
    from T
    group by 编号
      

  3.   

    用分析函数吧,效率会好些
    row_number() over(partition by 编号 order by  日期 )
      

  4.   

    max(项1)keep(dense_rank last order by 日期) 项1
    解释一下这一行的意思呗?
      

  5.   

    这个最后得到的是不是以编号分组的组合行?
    啥叫组合行啊?不懂
    这个语句执行的结果和我在2楼语句执行的结果是一样的
    这玩意还是最近和大版学的,蛮好用的,呵呵
    我的意思是会不会存在这个情况
    编号相同
    1  2  5   time1
    1  3  4  time2
    你得到的结果是 1 3  5 time2 ?
      

  6.   

    oracle 分析函数中 keep关键字的使用