数年前から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 です。私が抱えている問題の 1 つは、日付 (OEP40A.ADAT40) と時刻 (OEP40A.ATIM40) が別のフィールドであることです。これらのフィールドが分かれている場合、最大の日付と時刻を持つレコードを選択するにはどうすればよいですか? 上記のステートメントは、常に最初に日付でソートし、次に時間でソートすることによってそれを達成しますか?
追加するために編集:
私のサーバーは、V5R4 を実行する IBM iSeries です。他の誰かがそれを必要とする場合に備えて、私が思いついた解決策を次に示します。
COUNT、osld1f3.oep40a.cono40、osld1f3.oep40a.adat40、osld1f3.oep40a. .oep40a.atim40
osld1f3.oep40a から
WHERE osld1f3.oep40a.arct40=2 および osld1f3.oep40a.aprg40='OE340' および osld1f3.oep40a.actf40<>'X'