對於會計年度參數,我有2010年,2011年和2012年作爲選項,但無論選擇哪一年,我選擇「提交日期」列仍顯示2011年日期。我想舉個例子,如果我選擇2010年,只有在2010年提交的數據應該顯示,並且同樣是所有年份。任何幫助?使用動態SQL存儲過程返回錯誤數據
set @sqlstr = '
Select
[SchoolName] As [School Name],
Status= CASE WHEN PS.PrivateSchoolID = Ed.PrivateSchoolID THEN ''Submitted''
ELSE ''Not Submitted''END,
[Submitted By]= CASE WHEN PS.PrivateSchoolID = Ed.PrivateSchoolID
THEN [FirstName] + '' '' + [LastName] ELSE NULL END,
[Submitted On]= CASE WHEN PS.PrivateSchoolID = Ed.PrivateSchoolID
THEN Convert(Varchar(10), Ed.CreatedDate, 101) ELSE NULL END
From EnrollmentDateSchool Ed Right Outer Join
(select FP.FiscalYear, PrivateSchool.* from PrivateSchool
INNER JOIN FiscalYearPrivateSchool FP
ON PrivateSchool.PrivateSchoolID = FP.PrivateSchoolID) PS
ON Ed.PrivateSchoolID = PS.PrivateSchoolID Left Outer Join
Finance.dbo.Person P ON Ed.CreatedBy = P.PersonID
Where (FiscalYear = '+convert(varchar, @FiscalYear)+') AND (PS.IsActive = 1)'
IF (@SchoolID != -1)
set @sqlstr = @sqlstr + ' AND SchoolID ='+ convert(varchar, @SchoolID)
IF (@Status = -1)
set @sqlstr = @sqlstr + ' AND (PS.PrivateSchoolID = PS.PrivateSchoolID' + ')'
ELSE IF (@Status = 1)
set @sqlstr = @sqlstr + ' AND (PS.PrivateSchoolID = Ed.PrivateSchoolID' + ')'
ELSE
set @sqlstr = @sqlstr + 'AND (Ed.PrivateSchoolID is null' + ')'
SET @sqlstr = @sqlstr + 'ORDER BY SchoolName'
EXEC(@sqlstr)
END
當您使用'PRINT @sqlstr;'而不是'EXEC(@sqlstr)'時,您能顯示輸出嗎? –
另外,不要使用'CONVERT(VARCHAR,'沒有長度,爲什麼?http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-沒有length.aspx –