दिलचस्प पोस्ट
C # में स्ट्रिंग फ़ॉर्मेटिंग नामांकित बाइनरी खोज की जटिलता की गणना कैसे करें सिस्टम में एक फ़ाइल में जावा jQuery दिनांक पिक्चर: किसी दिनांक को क्लिक करते समय क्लियरिंग पिकर को रोकें एक और नियंत्रक से 3 रेंडर की गई कार्रवाई को रेखांकित करता है डेल्फी 2010: एक फ़ाइल में पूरे रिकॉर्ड को कैसे सहेज सकता है? क्या अजगर में गणित एनसीआर फ़ंक्शन है? क्या एक 'स्थिति: निश्चित' (हमेशा शीर्ष पर) div करने के लिए सरल jQuery तरीका क्या है? एंड्रॉइड आईसीएस पर सिस्टम बार को छुपाने का आसान तरीका मैक्रो नामों के लिए वैध वर्ण क्या हैं? सभी कक्षों के माध्यम से पाशन किए बिना पूरी रेंज को अपरकेस में कनवर्ट करें NTFS प्रदर्शन और फ़ाइलों और निर्देशिकाओं की बड़ी मात्रा एक जावा सरणी को परिवर्तित करना एक जावास्क्रिप्ट सरणी के लिए स्ट्रिंग्स की सूची जावास्क्रिप्ट में अद्वितीय ऑब्जेक्ट पहचानकर्ता डेटा यूआरएल पर एक छवि स्रोत सेट करना तत्काल उपलब्ध होना चाहिए?

एक WHERE खंड में उपनाम का उपयोग करना

मेरे पास एक क्वेरी है जिसका उपयोग मुझे तालिका ए में किसी भी पंक्तियों को दिखाने के लिए किया गया है जो हाल ही में पर्याप्त रूप से अपडेट नहीं किया गया है। (प्रत्येक पंक्ति को "माह_नो" के बाद 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 अमान्य पहचानकर्ता" त्रुटि का कारण बनती है कहने की जरूरत नहीं है, मैं अपने पूरे खंड में पूरे डीकोड समारोह को दोहराना नहीं चाहता। कोई विचार? (दोनों फिक्सेस और वर्कअराउंड स्वीकार किए जाते हैं …)

Solutions Collecting From Web of "एक 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 को बाहरी स्थितियों को लागू करने से पहले आंतरिक प्रश्नों को अमल करने की ज़रूरत नहीं है – ओरेकल आंतरिक रूप से इस प्रश्न को बदलने पर विचार करेगी और इनकी व्याख्या को आंतरिक क्वेरी में डाल देगी और ऐसा करेगी कि यह लागत प्रभावी है – जस्टिन गुफा

  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 .identifier = B.identifier HAVING MONTH_NO > UPD_DATE 

या आप अपने उपनाम हो सकता है एक HAVING खंड में

बस आप के लिए एक वैकल्पिक दृष्टिकोण के रूप में कर सकते हैं:

 WITH inner_table AS (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) SELECT * FROM inner_table WHERE MONTH_NO > UPD_DATE 

इसके अलावा आप अपनी कतार के लिए एक स्थायी दृश्य बना सकते हैं और दृश्य से चयन कर सकते हैं।

 CREATE OR REPLACE VIEW_1 AS (SELECT ...); SELECT * FROM VIEW_1;