数据库中有以下重复记录:
仓库 材料编号 规格 名称 价格 日期
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,谢谢(不是求最大价格,而是最近日期对应的价格)
刚开贴的答复都不太对,但结了贴,故再次开贴.
仓库 材料编号 规格 名称 价格 日期
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,谢谢(不是求最大价格,而是最近日期对应的价格)
刚开贴的答复都不太对,但结了贴,故再次开贴.
select * from
(
select row_number() over(partition by 材料编号 order by 日期 desc) no,* from tb
) t where no=1
where not exists (
select 1
from tab
where 仓库=a.仓库 and 材料编号= a.材料编号 and 规格 = a.规格 and 名称=a.名称
and 日期> a.日期
)
*
from
tb t
where
日期=(select max(日期) from tb where 仓库=a.仓库 and 材料编号= a.材料编号 and 规格 = a.规格 and 名称=a.名称)
where
日期=(select max(日期) from tb where 仓库=t.仓库 and 材料编号= t.材料编号 and 规格 = t.规格 and 名称=t.名称)