2008-09-05 18 views
19

मैं एक लिंक किए गए SSAS सर्वर के माध्यम से एक SQL क्वेरी निष्पादित करने का प्रयास कर रहा हूं। प्रारंभिक क्वेरी ठीक काम करता है:ओपनQuery परिणाम से SQL कथन पर "अमान्य स्तंभ नाम" त्रुटि

SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery(OLAP, 'OLAP Query') 

लेकिन अगर मैं जोड़ने की कोशिश:

WHERE "Value" > 0 

मैं एक त्रुटि

अमान्य स्तंभ नाम 'मान'

कोई विचार क्या मैं गलत कर रहा हूँ?


तो समस्या यह थी कि जिस क्रम में क्वेरी के तत्व संसाधित होते हैं, वे अलग होते हैं जो वे लिखे गए हैं।

http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx

MSSQL में मूल्यांकन के आदेश है: इस स्रोत के अनुसार

  1. से
  2. पर
  3. शामिल हों
  4. कहां
  5. ग्रुप द्वारा
  6. होने
  7. द्वारा चयनित

तो उर्फ ​​कहां के बाद और खंड होने तक संसाधित न था

  • आदेश।

  • +1

    इस प्रश्न पर सभी उत्तर के साथ क्या है !? –

    उत्तर

    17

    यह काम करना चाहिए:

    SELECT A.Value 
    FROM (
    SELECT "Ugly OLAP name" as "Value" 
    FROM OpenQuery(OLAP, 'OLAP Query') 
    ) AS a 
    WHERE a.Value > 0 
    

    ऐसा नहीं है कि मूल्य है एक आरक्षित शब्द नहीं है, समस्या यह है कि यह एक स्तंभ उर्फ, नहीं स्तंभ नाम है। इसे एक इनलाइन व्यू बनाकर, "वैल्यू" कॉलम नाम बन जाता है और फिर उस खंड में उपयोग किया जा सकता है।

    0

    ओह, बमर। मैंने अभी देखा, आप एएस फूड का चयन करते हैं। क्या आपको इस मामले में एक हैविंग क्लॉज की आवश्यकता नहीं है?

    SELECT whatever AS value FROM table HAVING value > 1; 
    

    मैं अभी भी "मूल्य" का उपयोग नहीं करता। लेकिन सुनिश्चित करने के लिए, इसे अपने दस्तावेज़ों में देखो!

    6

    आप कॉलम उपनाम के रूप में "मान" का उपयोग कर रहे हैं, और मुझे नहीं लगता कि उपनाम कहां से उपनाम में दिखाई दे सकता है। इसका उपयोग केवल लौटा कॉलम मान नाम देने के लिए किया जाता है। आपका जहां खंड मूल कॉलम नाम का संदर्भ लेना चाहिए:

    SELECT "Ugly OLAP name" as "Value" 
    FROM OpenQuery(OLAP, 'OLAP Query') 
    WHERE "Ugly OLAP name" > 0 
    
    0

    मैं इसे ग्रुप बाय से बाहर छोड़ने के लिए प्रतिबद्ध हो सकता हूं। अच्छी खबर यह है कि यह एक सादे पुराने चयनित उपनाम होने के ठीक ठीक काम करता है।

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