采购价格基于同一物料采购表中每个物料的最新事务处理日期



我有一个查询,我想列出每个库存项目的采购价格的所有最新交易日期。

我使用aggregate MAX((列出了每件商品的所有最新交易,而不包括价格,它非常完美。但当我把价格包括在内时,结果是每个项目都有多个不同价格的日期。

所以我尝试使用子查询,但它导致了错误。

以下是我使用样本项目作为测试的查询

select
a.a7itno as "Item No", a.a7appr as "Unit Price", 
b.maxtrdate as "Trans Date"
from m3edbprod.fcaavp a
Left Join
( select a7itno,max(a7trdt)as "maxtrdate"
from m3edbprod.fcaavp
group by a7itno) b
on a.a7itno=b.a7itno and a.a7trdt=b.maxtrdate
where a.a7itno='110ABC452'

运行时出现错误:

错误:SQL0205-列MAXTRDATE不在*N中的表B中。(状态:S0022,本机代码:FFFFFF 33(

预期结果应输出具有单个价格和最新转换的每个项目,如下表所示:

Item No  Unit Price Trans Date
-----------------------------
110ABC452    100.00      20210920

注意:日期为YYYYMMDD,如果我能将其设置为2021年9月20日或2021年9日20日这样的日期格式也很好。

如果我能从这里得到一些建议,我将不胜感激。

使用MAX作为子查询来获取最近的日期

SELECT  
a.a7itno AS "Item No",
a.a7appr AS "Unit Price",
a.a7trdt AS "Trans Date"
FROM m3edbprod.fcaavp a
WHERE a7trdt = (SELECT
MAX(b.a7trdt)
FROM m3edbprod.fcaavp b
WHERE b.a7itno = a.a7itno
)
AND a.a7itno = '110ABC452'

最后,由于这个查询,我得到了想要的结果:

SELECT a.A7ITNO, a.A7APPR, a.A7TRDT
FROM m3edbprod.FCAAVP a
INNER JOIN (select A7ITNO, max(A7TRDT*100000+A7RGTM) maxdatetime FROM m3edbprod.FCAAVP group by A7ITNO) b
ON a.A7ITNO = b.A7ITNO and a.A7TRDT*100000+a.A7RGTM = b.maxdatetime
AND a.a7itno='110ABC452'

最新更新