在一个数据表A里面的记录当中,有些记录(根据字段num+ITEM)是有多个,我要根据生效日期(effect_data)塞选它们,我想要的结果是:  查询出来的 字段NUM + 字段ITEM 的记录是唯一,如果不是唯一的话,就选择它的生效日期(effect_data)最晚的哪个记录.谢谢!

解决方案 »

  1.   


    select num,ITEM,min(effect_date),min(你所想要查询的字段) from A a
    where (select count(*) from A where num=a.num and ITEM=a.ITEM and effect_date>a.effect_date)<1  --生效日期(effect_data)最晚的哪个记录.
    group by num,ITEM
      

  2.   

    select * from 表A  a, 
    (select max(effect_data) as effect_data,num,ITEM from 表A group by num+ITEM) b
    where a.effect_date=b.effect_date and a.num=b.num and a.ITEM=b.ITEM
      

  3.   

    select distinct a.* from 表A  a, 
    (select max(effect_data) as effect_data,num,ITEM from 表A group by num+ITEM) b
    where a.effect_date=b.effect_date and a.num=b.num and a.ITEM=b.ITEM