最近十分に更新されていないテーブル A の行を表示するためのクエリがあります。(各行は「month_no」から 2 か月以内に更新する必要があります。):
SELECT A.identifier
, A.name
, TO_NUMBER(DECODE( A.month_no
, 1, 200803
, 2, 200804
, 3, 200805
, 4, 200806
, 5, 200807
, 6, 200808
, 7, 200809
, 8, 200810
, 9, 200811
, 10, 200812
, 11, 200701
, 12, 200702
, NULL)) as MONTH_NO
, TO_NUMBER(TO_CHAR(B.last_update_date, 'YYYYMM')) as UPD_DATE
FROM table_a A
, table_b B
WHERE A.identifier = B.identifier
AND MONTH_NO > UPD_DATE
WHERE 句の最後の行により、「ORA-00904 無効な識別子」エラーが発生します。言うまでもなく、WHERE 句で DECODE 関数全体を繰り返したくありません。何かご意見は?(修正と回避策の両方が受け入れられました...)