SQL多个记录取时间最近的值

我有一个表有A,B,C三条物料,每个物料都1月,2月,3月三条记录价格的记录,如何通过SQL搜索出这三个物料最新的时间的价格?急
物料 时间 价格
a 2001-1-1 1
a 2002-1-2 8
a 2003-3-2 1
b 2001-1-1 1
b 2002-1-2 3
b 2003-3-2 1
c 2001-1-1 2
c 2002-1-2 1
c 2003-3-2 9

我要通过SQL查询出a,b,c三个物料最新时间的单价,最终结果如下,请教大家如何写这个程序,我实际的记录很多,不可能一个个筛选,请大家帮忙,急。。。
编码 时间 价格
a 2003-3-2 1
b 2003-3-2 1
c 2003-3-2 9

能把表结构发来看一下吗?
假设表结构如下:
talbeA(wlname,price ,dtime)
查询结果如下:

select wlname,price ,dtime
from tableA X
where dtime =
(select max(dtime)
from tableA Y
where Y.wlname=X.wlname)
其中wlname表示物料名字
按照你的修改如下:只不过把tableA改为你的表名即可

select 物料,时间,价格
from tableA X
where 时间=
(select max(时间)
from tableA Y
where X. 物料=Y.物料)

我已经测试通过,如果你测试不通的话,就要考虑你字段类型是否跟我定义的一致
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-04-17
物料品类:name
时间
date
价格
pri
如果你的数据像你写的这样录入,各品类的更新时间都是一致的情况下,可以这样:
select
*
from
table
order
by
date
desc
rownum<=物料品类数
如果你不能确定更新时间是否一致,就比较麻烦了,恐怕只能一个一个筛选了。
第2个回答  2010-07-12
select * from table order by date desc limit 1
按照时间的降序排列 然后取第一条数据就行了
第3个回答  2010-07-14
物料品类:name 时间 date 价格 pri

如果你的数据像你写的这样录入,各品类的更新时间都是一致的情况下,可以这样:
select * from table order by date desc rownum<=物料品类数
如果你不能确定更新时间是否一致,就比较麻烦了,恐怕只能一个一个筛选了。
第4个回答  2010-07-16
把时间转换成数字格式再进行比较即可,或者与系统时间对比,获取时间差,得到最小的时间差也行
相似回答