0

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

我使用聚合 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,本机代码:FFFFFF33)

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

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

注意:日期为 YYYYMMDD,如果我可以将其设置为日期格式,如 20/09/2021 或 20-09-2021 也可以。

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

4

2 回答 2

0

用作子查询以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'
于 2021-11-25T02:01:16.213 回答
0

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

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'
于 2021-11-25T06:50:34.163 回答