1

我有一张列出许多物品交易的表格。我需要获取每个项目的最后一条记录(最新的记录)。

例如,我的表如下所示:

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)

任何帮助表示赞赏。

4

2 回答 2

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)
于 2013-03-15T19:38:23.153 回答
0

不需要子查询。您正在查询单个表,需要选择 MAX(date) 和 GROUP BY item 和 TrxLocation。

SELECT Item, max(DATERECD) AS max_dt_recd, TrxLocation
 FROM test
GROUP BY Item, TrxLocation
/
于 2013-03-15T20:06:08.513 回答