进货单的数据表中,一个货品有很多进货日期,不同的进货价格,我取最近一次的进货价该如何写sql语句?试过:
     select * from table A
    where not exists
    select 1 from table where goodsname=A.goodsname and credate>A.credate但还是有数量重复数据,而且是查的整个库存,需要很长时间!且不能指定查询条件!用分组函数还是不行,盼赐教!谢谢!

解决方案 »

  1.   

    select goodname,credate,price
    from (select goodname,price, dense_rank() over (partition by credate order by credate desc) rank_no from tableA)
     where rank_no = 1 order by goodname,price
      

  2.   

    抱歉,上面写错了
    这个是可以的
    select   goodname,credate,price
    from   (select   goodname,credate,price,   dense_rank()   over   (partition   by   goodname   order   by   credate   desc)   rank_no   from   A) 
      where   rank_no   =   1   order   by   goodname,price;