【发布时间】:2015-01-22 05:09:59
【问题描述】:
我已经使用 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 分区顺序 osld1f3.oep40a.adat40, osld1f3.oep40a.atim40 desc) 作为 COUNT, osld1f3.oep40a.cono40, osld1f3.oep40a.adat40, osld1f3.oep40a。 ordn40, osld1f3.oep40a.atim40
来自 osld1f3.oep40a
WHERE osld1f3.oep40a.arct40=2 and osld1f3.oep40a.aprg40='OE340' and osld1f3.oep40a.actf40'X'
【问题讨论】:
标签: sql crystal-reports command iseries-navigator