检索项目的最新事务

时间:2013-03-15 19:31:35

标签: sql

我有一张表列出了很多商品交易。我需要获得每个项目的最后一条记录(最新的记录)。

例如我的表格如下:

Item    Date    TrxLocation
XXXXX   1/1/13   WAREHOUSE
XXXXX   1/2/13   WAREHOUSE
XXXXX   1/3/13   WAREHOUSE

aaaa    1/1/13   warehouse
aaaa    2/1/13   WAREHOUSE

我希望数据返回如下:

XXXXX    1/3/13   WAREHOUSE
AAAA     2/1/13   WAREHOUSE

我尝试过做这样的事情,但它带回了错误的日期

select Distinct ITEMNMBR 
TRXLOCTN,
DATERECD
from TEST
where DateRecd = (select max(DATERECD)
        from TEST)

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

你走在正确的轨道上。您只需将子查询更改为相关子查询,这意味着您可以为外部查询提供一些上下文。如果您只是自己运行子查询(select max(DATERECD) from TEST),您会得到什么?无论项目如何,您都会获得整个表格中的最新日期。您需要通过链接ITEMNMBR列将子查询绑定到外部查询,如下所示:

SELECT ITEMNMBR, TRXLOCTN, DATERECD
FROM TEST t
WHERE DateRecd = (
  SELECT MAX (DATERECD) 
  FROM TEST tMax 
  WHERE tMax.ITEMNMBR = t.ITEMNMBR)

答案 1 :(得分:0)

不需要子查询。您正在查询单个表,需要选择MAX(日期)和GROUP BY项以及TrxLocation。

SELECT Item, max(DATERECD) AS max_dt_recd, TrxLocation
 FROM test
GROUP BY Item, TrxLocation
/