Điều này là không thể trực tiếp, vì theo thứ tự thời gian, WHERE xảy ra trước CHỌN, luôn là bước cuối cùng trong chuỗi thực thi.
Bạn có thể thực hiện một lựa chọn phụ và lọc trên đó:
SELECT * FROM
(
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
) AS inner_table
WHERE
MONTH_NO > UPD_DATE
Một chút thông tin thú vị được chuyển lên từ các bình luận:
Không nên xảy ra lỗi hiệu suất. - Hang động Justin