質問があります。夜の仕事の一部として実行されるクエリがあります。このクエリは、その日に行われたすべてのアクションを提供するはずです。ただし、これはトリッキーな部分であり、常に同時に実行されるとは限りません。
これは夜間のジョブの一部であるため、クエリが 1 日目に 00:05 に実行され、2 日目には 23:55 に実行される可能性があります。今日の日付を使用したり、昨日の日付を使用したりすることはできないため、クエリが複雑になります。
これまでに次のクエリを取得しました。
select deuda_id from deuda where n_expediente in
(select
(case when to_char(sysdate, 'HH24:MI:SS') between '00:00:00' and '12:00:00' then
(select n_expediente from cartas_enviadas where codigo_carta in ('OIEUR','OIGBP') and f_envio > trunc(sysdate-1)
) else
(select n_expediente from cartas_enviar where codigo_carta in ('OIEUR','OIGBP')
)
) from dual
);
簡単な説明: (データベースはスペイン語/イタリア語です): deuda_id は一意の請求書番号です。n_expediente はケース番号です (このクライアントでは常に一意です)。f_envio は実行日です。codigo_carta はアクション タイプです。
Cartas_enviar は、予定されているすべてのアクションを保持します。アクションが実行されると、f_envio に入ります。一晩で、実行されたすべてのアクションが cartas_enviar から cartas_enviadas に移動されます)。
私がやろうとしているワットは次のとおりです。
現在時刻を見てみたい。午前 0 時前の場合は、テーブル cartas_enviar を確認し、そこから n_expediente を取得しますが、アクションが OIEUR または OIGBP の場合のみです。真夜中過ぎの場合、テーブル cartas_enviadas を見て、そこから n_expediente を取得したいのですが、アクションが OIEUR または OIGBP であり、アクションが昨日実行された場合のみです。
ただし、このクエリを実行しようとすると、次のエラー メッセージが表示されます
ORA-00905: missing keyword
。
誰かがこのクエリを手伝ってくれませんか?
PS: Oracle データベースです。