数据库中有以下重复记录:
仓库 材料编号 规格 名称 价格 日期
BF004 60302061 76 x 94x 82.5 3寸加壓紙管 15.12 2011-3-5
BF004 60302061 76 x 94x 82.5 3寸加壓紙管 14.85 2011-3-4
BF004 60302061 76 x 94x 82.5 3寸加壓紙管 15.12 2011-3-4
bf004 60302060 76 x 94x81.5 3寸加壓紙管 14.67 2011-2-26
bf004 60302060 76 x 94x81.5 3寸加壓紙管 14.67 2011-3-17我想得到以下结果:仓库 材料编号 规格 名称 价格 日期
BF004 60302061 76 x 94x 82.5 3寸加壓紙管 15.12 2011-3-5
bf004 60302060 76 x 94x81.5 3寸加壓紙管 14.67 2011-3-17
也就是日期最近的那一笔记录,要如何写SQL,谢谢(不是求最大价格,而是最近日期对应的价格)
刚开贴的答复都不太对,但结了贴,故再次开贴.

解决方案 »

  1.   

    不对?哪里不对?
    select * from 
    (
      select row_number() over(partition by 材料编号 order by 日期 desc) no,* from tb
    ) t where no=1
      

  2.   

    select * from tab a
    where not exists (
       select 1
    from tab
    where 仓库=a.仓库 and  材料编号= a.材料编号 and 规格 = a.规格 and 名称=a.名称
    and 日期> a.日期
    )
      

  3.   

    select
     * 
    from
     tb t 
    where
     日期=(select max(日期) from tb where 仓库=a.仓库 and 材料编号= a.材料编号 and 规格 = a.规格 and 名称=a.名称)
      

  4.   

    select * from  tb t 
    where
     日期=(select max(日期) from tb where 仓库=t.仓库 and 材料编号= t.材料编号 and 规格 = t.规格 and 名称=t.名称)