2010-10-07 17 views
11

जहां खंड में गणना की गई फ़ील्ड का उपयोग करने का कोई तरीका है?जहां खंड में गणना की गई फ़ील्ड का उपयोग करने का कोई तरीका है?

मैं की तरह

SELECT a, b, a+b as TOTAL FROM (
    select 7 as a, 8 as b FROM DUAL 
    UNION ALL 
    select 8 as a, 8 as b FROM DUAL 
    UNION ALL 
    select 0 as a, 0 as b FROM DUAL 
) 
WHERE TOTAL <> 0 
; 

कुछ करना चाहता हूँ, लेकिन मैं मिल ORA-00904: "कुल": अमान्य पहचानकर्ता।

तो मैं

SELECT a, b, a+b as TOTAL FROM (
    select 7 as a, 8 as b FROM DUAL 
    UNION ALL 
    select 8 as a, 8 as b FROM DUAL 
    UNION ALL 
    select 0 as a, 0 as b FROM DUAL 
) 
WHERE a+b <> 0 
; 

उत्तर

31

तार्किक रूप से, select खंड एक प्रश्न का मूल्यांकन के अंतिम भागों में से एक है का उपयोग करने के लिए है, इसलिए उपनाम और व्युत्पन्न कॉलम उपलब्ध नहीं हैं।

(। order by, जो तार्किक पिछले होता है को छोड़कर) एक व्युत्पन्न तालिका का उपयोग करते हुए इस के चारों ओर की दूरी पर है:

select * 
from (SELECT a, b, a+b as TOTAL FROM ( 
      select 7 as a, 8 as b FROM DUAL 
      UNION ALL 
      select 8 as a, 8 as b FROM DUAL 
      UNION ALL 
      select 0 as a, 0 as b FROM DUAL) 
    ) 
WHERE TOTAL <> 0 
; 
+0

भी एक CTE का उपयोग किया जा सका। – onedaywhen

+1

मैं इसे संग्रहीत प्रक्रिया में आजमा रहा था और उपरोक्त वाक्यविन्यास तब तक काम नहीं करेगा जब तक कि मैंने व्युत्पन्न तालिका को भी उपनाम नहीं किया। – DilbertDave

+0

@DilbertDave, दिलचस्प। क्या आप ओरेकल में कोशिश कर रहे थे? अगर मुझे सही याद है, तो एसक्यूएल सर्वर को हमेशा उपनाम करने के लिए व्युत्पन्न टेबल की आवश्यकता होती है। –

संबंधित मुद्दे

 संबंधित मुद्दे