2012-10-30 83 views
3

我正在查询交易数据。我想获取最新日期交易的多个列。 PONumber,Vendor,每件商品的价格,最后一次购买。例如:在一列中获取最大值(日期)的整个记录​​

数据:

PONumber Item Vendor Price DateOrdered 
1   ABC  Wal-Mart 1.00  10/29/12 
2   ABC  BestBuy 1.25  10/20/12 
3   XYZ  Wal-Mart 2.00  10/30/12 
4   XYZ  HomeDepot 2.50  9/14/12 

所需的结果集:

PONumber Item Vendor Price DateOrdered 
1   ABC  Wal-Mart 1.00  10/29/12 
3   XYZ  Wal-Mart 2.00  10/30/12 

试图在DateOrdered使用最多的功能,但是当我包括供应商,我得到每个厂商的最后一次购买和项目(太多行)。我需要每个项目的一个记录。任何想法如何完成?将MS Access 2007与ODBC一起使用到Oracle表中。提前致谢。

+0

Bill Karwin对这个问题有一个优雅的RDBMS不可知的方法:[获取具有列最大值的行](http://stackoverflow.com/a/123481/154439)。你必须用你的实际数据做一些基准测试,看看他的方法比@ Remou的方法会更好还是更差。 – mwolfe02

+0

@ user714965就这样。道歉。 – Fionnuala

回答

3

如何:

SELECT 
    tran.PONumber, 
    tran.Item, 
    tran.Vendor, 
    tran.Price, 
    tran.DateOrdered 
FROM tran 
WHERE tran.DateOrdered = (
    SELECT Max(DateOrdered) 
    FROM tran t 
    WHERE t.item=tran.item) 

陈德良在哪里是你的表。

+0

完美工作。非常感谢! – jesbrown4154

相关问题