sql - Stored procedure returns inaccurate data -


[पर जमा] कॉलम के लिए, जब @fiscalyear है

उदाहरण के लिए यदि @fiscalyear = 2011 मैं के साथ डेटा चाहता हूं [पर जमा] कॉलम समाप्त होता है केवल 2011 या null के साथ और इसी तरह 2010 और 2012 के दूसरे वर्षों के लिए। अभी समस्या यह है कि जब मैं 2012 0r 2010 का चयन करता हूं, तब भी मैं 2011 में समाप्त होने वाली तारीखों के साथ डेटा प्राप्त करता हूं। कोई विचार? और संकेत के लिए हारून के लिए धन्यवाद - मेरी स्क्रिप्ट अब अलग दिखती है।

  @ फ़िलेसी ईयर int, @SchoolID int, @Status int के रूप में प्रारंभ से पहले सेट करें; @intCount पूर्णांक की घोषणा @sqlstr nvarchar (2000) सेट @intCount = 0 का चयन @intCount = गणना (*) EnrollmentDateSchool एड राइट आउटर से घोषित जुड़ें (चयन FP.FiscalYear, PrivateSchool। पर PrivateSchool अंदरूनी शामिल हों FiscalYearPrivateSchool एफपी से * PrivateSchool.PrivateSchoolID = FP.PrivateSchoolID) पर Ed.CreatedBy = P.PersonID कहां FiscalYear = @ FiscalYear पर Ed.PrivateSchoolID = PS.PrivateSchoolID वाम बाहरी जुड़ें Finance.dbo.Person पी पी एस और PS.IsActive = 1 और (@SchoolID = -1 या SchoolID = @ SchoolID) और ((@Status = -1) या (@ स्थिति = 1 और PS.PrivateSchoolID = Ed.PrivateSchoolID) या (Ed.PrivateSchoolID रिक्त है)) @intCount & gt रहा हो; 0 BEGIN का चयन करें [SchoolName] [स्कूल का नाम], स्थिति = मामले के रूप में जब PS.PrivateSchoolID = Ed.PrivateSchoolID फिर 'प्रस्तुत' शेष 'प्रस्तुत नहीं' अंत, = मामला [द्वारा प्रस्तुत] जब PS.PrivateSchoolID = Ed.PrivateSchoolID तो [ प्रथम नाम] '' + [अंतिम नाम] अन्य सभी शून्य अंत, [जब PS.PrivateSchoolID = Ed.PrivateSchoolID तो कन्वर्ट] पर = मामला प्रस्तुत (VARCHAR (10), Ed.CreatedDate, 101) EnrollmentDateSchool एड राइट आउटर से सब शून्य अंत में शामिल हों (चयन FP.FiscalYear, PrivateSchool। * से PrivateSchool अंदरूनी शामिल हों FiscalYearPrivateSchool एफपी पर PrivateSchool.PrivateSchoolID = FP.PrivateSchoolID) पुनश्च पर Ed.PrivateSchoolID = PS.PrivateSchoolID वाम आउटर पर Ed.CreatedBy = P.PersonID Finance.dbo.Person पी शामिल हों चुनें और 'स्कूल रोस्टर प्रमाणन रिपोर्ट' के अंत में 'कोई डेटा नहीं मिला' चुनें    

चयन करना COUNT (*) और उसके बाद 0 के परिणाम के साथ तुलना करके इसका अर्थ है कि सर्वर को पूरे परिणाम प्राप्त करने के लिए सभी काम करना है सेट करें, भले ही उसे तुरंत एक मिलान पंक्ति मिल गई हो यदि आप हो सकता है इसे एक परीक्षा के साथ सीधे अपने if स्टेटमेंट में बदलें, उदाहरण:

  यदि मौजूदा (SELECT * FROM / * Current query * /) BEGIN END   

वैकल्पिक रूप से, इस संग्रहित proc से आपके उपभोग के परिणामों के आधार पर (मैं कल्पना करता हूं कि पहले से ही कुछ चालाक सामान करना है, यह देखते हुए कि परिणाम के दो संभावित परिणाम उपलब्ध हैं या उपलब्ध नहीं हैं अलग-अलग आकृतियों के लिए) बस आपकी आंतरिक क्वेरी (उचित रूप से संशोधित) होनी चाहिए, और उसके बाद इसे नीचे जोड़ दें:

  if @@ ROWCOUNT = 0 BEGIN 'कोई डेटा नहीं मिला' के रूप में 'स्कूल रोस्टर प्रमाणन का चयन करें   

एचटीएमएल>

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

c# - Using Vici cool Storage with monodroid -

python - referencing a variable in another function? -