【问题标题】:Purchase Price base on Latest Trans Date of each item from a same Item Purchase Table采购价格基于同一项目采购表中每个项目的最近交易日期
【发布时间】:2022-01-03 08:39:08
【问题描述】:

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

我使用聚合 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 也可以。

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

【问题讨论】:

  • 你用的是什么数据库?

标签: sql winsql


【解决方案1】:

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

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'

【讨论】:

  • 和我的回答基本一样
【解决方案2】:

使用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'

【讨论】:

  • 感谢罗马的编码。运行时出现此错误:错误:SQL0205 - M3EDBPROD 中的 FCAAVP 表中没有列 MAXTRDATE。 (状态:S0022,本机代码:FFFFFF33)
  • 对不起,你能再试一次吗
  • 我还尝试将您对 a.maxtrdate 的查询更正为 b.maxtrdate ,这导致另一个错误:错误:SQL5001 - 列限定符或表 B 未定义。 (状态:S1000,本机代码:FFFFEC77)
  • @VincentLee 检查更新的答案... a.maxtrdate 列不应该存在。
  • Rome,当我运行此语句时,我在列名 maxtrdate 下得到了正确的日期:SELECT --- get maxdate of item MAX(a7trdt) AS "maxtrdate" FROM m3edbprod.fcaavp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多