日期:2014-05-17  浏览次数:20563 次

指定一个日期,查询所有货品在这个日期前最近一次的库存数
本帖最后由 sc1999vip 于 2013-08-26 20:01:36 编辑
      [align=left]  货品代码            货品名称                    出库数量  出库日期

JC31-00155A 激光打印机用马达 10.00 2013-8-23 0:00:00
JC31-00093B 激光打印机用马达 10.00 2013-8-23 0:00:00
        JC31-00155B 激光打印机用马达 8.00 2013-8-23 0:00:00 JC31-00155A 激光打印机用马达 40.00 2013-8-24 0:00:00 JC31-00155A 激光打印机用马达 40.00 2013-8-25 0:00:00 JC31-00093B 激光打印机用马达 40.00 2013-8-25 0:00:00
        JC31-00093B 激光打印机用马达 10.00 2013-8-26 0:00:00[/align]

在上面这个表中,共有三种货品,假如我输入一个日期 2013-08-25,我想查询出这三种货品,在8月25日前最近的一次出库数量。问一下用SQL改怎么写?

上面这个表中,我想要的查询结果是:

JC31-00155B 激光打印机用马达 8.00 2013-8-23 0:00:00
JC31-00155A 激光打印机用马达 40.00 2013-8-25 0:00:00
JC31-00093B 激光打印机用马达 40.00 2013-8-25 0:00:00

请帮帮忙。


------解决方案--------------------
如果是sql server2005以上,还有下面的方法

select a.* 
from (select *,rn=ROW_NUMBER() OVER(partition by 货品代码 order by 出库日期 desc) 
where convert(varchar(10),出库日期,120)<='2013-08-25'
)a
where rn=1