有下面表TEST_MAO
表数据如下:
业务名称  更新日期 预定开始执行日  预定结束执行日
打印      20090501  20090516       20090518
打印      20090601  20090615       20090618
打印      20090601  20090616       20090618
装订      20090602  20090618       20090619
装订      20090602  20090618       20090620
出仓      20090605  20090620       20090625逻辑是:相同 业务名称 的数据,其最新 更新日期 对应的第一条记录被抽出。
按照上述逻辑,抽出数据如下:
业务名称  更新日期 预定开始执行日  预定结束执行日
打印      20090601  20090615       20090618(或者20090616       20090618)
装订      20090602  20090618       20090619(或者20090618       20090620)
出仓      20090605  20090620       20090625
急等,在线交流

解决方案 »

  1.   

    select 业务名称 , 更新日期 ,预定开始执行日 , 预定结束执行日
    from (select 业务名称 , 更新日期 ,预定开始执行日 , 预定结束执行日 ,  row_number() over(partition by 业务名称 order by 更新日期 ) rn
    from test_mao ) t
    where rn=1
      

  2.   


    SELECT d.name,d.vv_date,MAX(d.vv_begin_time),MAX(d.vv_end_time) FROM temp d
    WHERE (d.name,d.vv_date) IN
    (SELECT t.name,
           MAX(t.vv_date)
    FROM temp t
    GROUP BY t.name) 
    GROUP BY d.name,
             d.vv_date1 出仓 20090605 20090620 20090625
    2 打印 20090601 20090616 20090618
    3 装订 20090602 20090618 20090620