2011-01-20 11 views
16

मैं एक रिपोर्ट लिखने की प्रक्रिया में हूं और आयु कॉलम का औसत मूल्य प्राप्त करना चाहता हूं। समस्या यह है कि सभी पंक्तियों में उम्र नहीं है।टीएसक्यूएल - एक कॉलम में सभी मानों का औसत जो शून्य नहीं हैं

यदि कॉलम के लिए मान 0 2 4 हैं, तो मैं 3 लौटा दूंगा, न कि 2. मैं उन पंक्तियों में अन्य कॉलम का उपयोग करके उपयोग कर रहा हूं, जहां मैं शून्य पंक्तियों को केवल बाहर नहीं कर सकता। क्या AVGIfNotZero प्रकार की फ़ंक्शन जैसी कोई चीज़ है?

उत्तर

38
SELECT 

    AVG (CASE WHEN Value <> 0 THEN Value ELSE NULL END) 
    .... 

एवीजी नल मूल्यों को ध्यान में रखेगा। या यह

AVG (NULLIF(Value, 0)) 
0

, ( चयन औसत (क) से

 (
     SELECT NULLIF([Column1], 0) 
      UNION ALL 
     SELECT NULLIF([Column2], 0) 
      UNION ALL 
     SELECT NULLIF([Column3], 0) 
      UNION ALL 
     SELECT NULLIF([Column4], 0) 
     ) T (a) 
    ) AS [4 Column Average] 
+0

आप के बजाय एक जवाब की अधिक जानकारी मिलती देना चाहिए सिर्फ कोड है कि ओपी या भविष्य पाठकों को नहीं समझ सकते का एक ब्लॉक छोड़ने। – zgue

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