यह सीधे तौर पर संभव नहीं है, क्योंकि कालानुक्रमिक रूप से, पहले . WHERE होता है चयन करें, जो हमेशा निष्पादन श्रृंखला का अंतिम चरण होता है।
आप उप-चयन कर सकते हैं और उस पर फ़िल्टर कर सकते हैं:
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
टिप्पणियों से दिलचस्प जानकारी बढ़ी:
<ब्लॉककोट>कोई प्रदर्शन हिट नहीं होना चाहिए। Oracle को बाहरी परिस्थितियों को लागू करने से पहले आंतरिक प्रश्नों को अमल में लाने की आवश्यकता नहीं है - Oracle इस क्वेरी को आंतरिक रूप से बदलने पर विचार करेगा और विधेय को आंतरिक क्वेरी में नीचे धकेल देगा और यदि यह लागत प्रभावी है तो ऐसा करेगा। - जस्टिन गुफा