我有一张表列出了很多商品交易。我需要获得每个项目的最后一条记录(最新的记录)。
例如我的表格如下:
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)
感谢任何帮助。
答案 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
/