我已经使用 Crystal Reports 几年了,但直到现在我一直避免使用“添加命令”。
我有一份生成订单确认的报告。我想安排在特定时间间隔打印确认信息,但为了做到这一点,我需要最后一次修改订单的日期/时间。该信息可以在审计表中找到,但是,审计表可以包含同一订单的多个副本,具体取决于它被修改的次数。我不能直接加入这个审计表,因为它在我的订单确认中创建了重复的行,虽然我可以从子报告中的审计表中收集所需的信息,但我无法过滤我的主报告关于这些结果。
我想拿审计表,只带入每个订单的最新记录,以便我可以过滤编辑日期和时间。
任何人都可以帮助撰写此声明吗?
这是我到目前为止所拥有的:
SELECT "OEP40A"."ORDN40", "OEP40A"."ADAT40", "OEP40A"."ATIM40", "OEP40A"."APRG40", "OEP40A"."ARCT40"
FROM "S103EC55"."OSLD1F3"."OEP40A" "OEP40A"
WHERE "OEP40A"."ARCT40"='2' AND "OEP40A"."APRG40"='OE340'
ORDER BY "OEP40A"."ORDN40", "OEP40A"."ADAT40" DESC, "OEP40A"."ATIM40" DESC
订货号为 OEP40A.ORDN40。我遇到的问题之一是日期(OEP40A.ADAT40)和时间(OEP40A.ATIM40)是单独的字段。当这些字段分开时,如何选择具有最大日期和时间的记录?上面的陈述是否会通过始终先按日期排序然后按时间排序来实现?
编辑添加:
我的服务器是运行 V5R4 的 IBM iSeries。这是我想出的解决方案,以防其他人需要它。
SELECT ROW_NUMBER() over (osld1f3.oep40a.ordn40 分区 order by osld1f3.oep40a.adat40, osld1f3.oep40a.atim40 desc) as COUNT, osld1f3.oep40a.cono40, osld1f3.oep40a.adat40, osld1f3.oep40a.ordn .oep40a.atim40
来自 osld1f3.oep40a
WHERE osld1f3.oep40a.arct40=2 和 osld1f3.oep40a.aprg40='OE340' 和 osld1f3.oep40a.actf40<>'X'