Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

WHERE क्लॉज में उपनाम का उपयोग करना

यह सीधे तौर पर संभव नहीं है, क्योंकि कालानुक्रमिक रूप से, पहले . 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 इस क्वेरी को आंतरिक रूप से बदलने पर विचार करेगा और विधेय को आंतरिक क्वेरी में नीचे धकेल देगा और यदि यह लागत प्रभावी है तो ऐसा करेगा। - जस्टिन गुफा



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या कर्सर में पीएल/एसक्यूएल चर प्रभावी रूप से बाध्य पैरामीटर के समान हैं?

  2. Oracle D2k फॉर्म में विंडो प्रबंधन

  3. संग्रह विधि:Oracle डाटाबेस में ट्रिम प्रक्रिया

  4. बड़े सीएलओबी के साथ सी # से संग्रहित प्रक्रिया को कॉल करने में समस्याएं

  5. मैं Oracle पर SQL का उपयोग करके चालू वर्ष कैसे प्राप्त करूं?