2009-06-24 12 views
7

एसएएस में ओरेकल एनवीएल फ़ंक्शन के बराबर है?एसएएस में शून्य के रूप में अनुपलब्ध मानों का इलाज करें जहां खंड

उदाहरण के लिए

, अगर मैं एसएएस में जहां खंड है कि कहते हैं है:

यह किसी भी पंक्तियों कि myVar = शामिल करने के लिए नहीं जा रहा है।

where myVar > -2 or missing(myVar) 

मैं की तरह कुछ करने में सक्षम होना चाहते हैं:

अगर मैं शून्य के रूप में अनुपलब्ध मान का इलाज करना चाहते हैं, मैं कहना है

where NVL(myVar, 0) > -2 // or some SAS equivalent 

वहाँ कुछ इस तरह है एसएएस में?

+1

ध्यान दें कि यह गैर एसएएस डेटा में केवल बात यह है कि साथ myVar = पंक्तियों डेटा सेट ouput होगा। शामिल नहीं किया जाएगा। कारण यह है कि गुम मूल्य शून्य हैं, और एनयूएलएल के साथ तुलना हमेशा गलत साबित होगी। मूल एसएएस डेटा में, गायब मानों को गैर-ऋणात्मक संख्या के रूप में माना जाता है, जो शून्य से कम है। तो "जहां MyVar> -2;" देशी एसएएस डेटा पर काम करते समय वास्तव में लापता मूल्यों के साथ काम करेंगे। –

उत्तर

13

coalesce function नौकरी करना चाहिए।

where coalesce(myVar,0) > -2 

मुझे यकीन है कि अगर समारोह एसएएस 9 में उपलब्ध हो गया नहीं कर रहा हूँ, तो यह काम नहीं कर सकते आप एक बहुत पुराने एसएएस संस्करण है।

7

कोलेससे फ़ंक्शन का उपयोग करना ऐसा करने का सही तरीका है।

लेकिन आप जहां सम्मिलित लागू नहीं किया गया एसएएस के एक पुराने संस्करण है, तो आप इस चाल का उपयोग कर सकते हैं:

where sum(myVar,0) > -2 

आप में जोड़ने, किसी भी गैर लापता संख्या के लिए एसएएस में sum function का उपयोग करते हैं संक्षेप में परिणाम को अनुपलब्ध होने के लिए मजबूर किया जाएगा।

इस प्रकार योग फ़ंक्शन के साथ 0 जोड़ना एक लापता मान को 0 में बदल देगा, और अनुपलब्ध मान अनलर्टेड रहेगा।

+1

+1: यह एक शानदार सुझाव है! अब हम अपने उत्पाद के लिए एसएएस 8 का समर्थन नहीं करते हैं, इसलिए मुझे वास्तव में परवाह नहीं है कि अगर सहवास उपलब्ध था या नहीं, लेकिन यदि मैंने किया, तो यह एक सरल कामकाज होगा। – Adnan

-1

एक चीज जो आप कर सकते हैं सरणी varlistname var1 var2 var3 varn; यदि सरणी <>। फिर आउटपुट;

यह गैर लापता मूल्यों होने

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