2012-11-29 18 views
5

मैं पहुँच DB पर वीबी आवेदन में इस क्वेरी है:ग़लत नंबर

SELECT DISTINCT Specialization, MAX(a.faultZone) AS faultZone, ISNULL(a.faultCount, 0) AS NoOfFaults FROM Technicians AS t 
    LEFT JOIN 
      ( 
      SELECT DISTINCT Faults.[Type] AS faultType, MAX(Faults.[Zone]) AS faultZone, COUNT(Faults.[Type]) AS faultCount 
      FROM Faults " 
      WHERE Faults.[Zone] = 8 " ' this value will be from variable 
      GROUP BY Faults.[Type] " 
      ) AS a 
    ON (t.Specialization = a.faultType) 
    WHERE t.specialization <> 'None' " 
    GROUP BY a.faultCount, t.Specialization 

यह समस्या यह है कि मैं का समाधान नहीं कर निम्नलिखित देता है ...

"क्वेरी अभिव्यक्ति 'IsNull (a.faultCount, 0' में समारोह के साथ प्रयोग किया तर्कों की गलत संख्या।"

बस सेट क्या मैं हासिल करना चाहते हैका मूल्यशून्य से, जिसका अर्थ यह होगा कि विशेष क्षेत्र में कोई दोष नहीं है।

धन्यवाद

उत्तर

7

बस मेरे दो सेंट जोड़ने के लिए, और जब मुझे Nz() के सरल सिंटैक्स पसंद हैं, तो यदि आप मुसीबत मुक्त प्रदर्शन चाहते हैं, तो IsNull() और NZ() दोनों को Is Null के पक्ष में टालना चाहिए:
IIF(a.faultCount Is Null, 0, a.faultCount)। एक विशाल प्रदर्शन प्रभाव के साथ, स्थानीय स्तर पर निष्पादित किया जाना है http://allenbrowne.com/QueryPerfIssue.html

इसके अलावा, अगर आपके टेबल एसक्यूएल सर्वर या Oracle में हैं, NZ का उपयोग कर() प्रश्न की अधिक के लिए बाध्य करेगा:

यहाँ उत्कृष्ट स्पष्टीकरण देखें।

+0

+1 मुझे लिंक पसंद है। व्यक्तिगत रूप से मुझे कभी भी एनजे के साथ परेशानी नहीं हुई है लेकिन कुछ मामलों में यह समस्या हो सकती है – HelloW

+0

अत्यधिक मेरी इच्छा है कि मैं यहां सभी उत्तरों को स्वीकार कर सकूं। मैंने लिंक चेक किया और मेरा कोड दोबारा लिख ​​सकता है। आपका बहुत बहुत धन्यवाद! – johnyTee

+0

यह मुझे बहुत निराशा के माध्यम से मिला है। बहुत उपयोगी। धन्यवाद। – StatsViaCsh

5

IsNull की माइक्रोसॉफ्ट एक्सेस 'संस्करण सबसे एसक्यूएल संस्करणों की तुलना में अलग है; यह बस returns TRUE if the value is NULL, and FALSE if it isn't है।

आप मूल रूप से IIF() उपयोग कर अपने खुद के निर्माण के लिए की जरूरत है:

IIF(ISNULL(a.faultCount), 0, a.faultCount) 
+0

यह है, धन्यवाद – johnyTee

5

मुझे लगता है कि आप NZ समारोह

Nz(a.faultCount, 0) 

0 वापस आ जाएगी अगर मान शून्य है की तलाश कर रहे

+0

हाँ, मैंने अभी इसकी खोज की है और यह भी एक अच्छा जवाब है। Thx – johnyTee

+1

+! - वाह, किसी भी तरह मैंने इसे कभी नहीं देखा है, या इसके बारे में पूरी तरह से भूल गया है। मुझे प्यार है कि 'ISNULL' के SQL सर्वर और एक्सेस' संस्करण पूरी तरह से अलग हैं। – LittleBobbyTables

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