此過程的工作原理直到我嘗試傳遞參數以限制在數據透視表過程的主要選擇查詢中選擇的記錄。在SQL數據透視表中傳遞日期限制結果
如果我註釋掉對@Startdate和@EndDate的引用,它可以工作,但是會選擇所有記錄。 需要進行哪些更改,以便提示日期範圍變量並將它們合併到查詢結果中?
我得到的錯誤是: 消息137,級別15,狀態2,行10 必須聲明標量變量「@StartDate」。
下面是proc下面。
在此先感謝。
ALTER PROCEDURE usp_Get_Monthly_IR_Report
@StartDate SMALLDATETIME ,@EndDate SMALLDATETIME AS
DECLARE @ColumnNames NVARCHAR(MAX)= ''
DECLARE @SQL NVARCHAR(最大值)= ''
SELECT @ColumnNames + = QUOTENAME(GL_Facilities_Name)+',' FROM GL_Facilities
SET @ColumnNames = LEFT(@ColumnNames,LEN(@ColumnNames)-1) SET @sql =
「SELECT * FROM ( SELECT IR_Priority_level.IR_Priority_Level_Text爲[優先順序],IR_Types .IR_Types_Text AS [類型],GL_Facilities.GL_Facilities_Name FROM IR_Types LEFT JOIN IR_Priority_Level ON IR_Types.IR_Priority_Level_ID = IR_Priority_Level.IR_Priority_Level_ID LEFT OUTER JOIN IR_Incidents ON IR_Types.IR_Types_ID = IR_Incidents.IR_Types_ID LEFT JOIN GL_Business_Line_Contracts ON IR_Incidents.GL_Business_Line_Contracts_ID = GL_Business_Line_Contract s.GL_Business_Line_Contracts_ID LEFT JOIN GL_Facilities ON GL_Business_Line_Contracts.GL_Facilities_ID = GL_Facilities.GL_Facilities_ID WHERE IR_Incidents_Date BETWEEN @StartDate和@EndDate )AS BaseData
PIVOT( 計數(GL_Facilities_Name) FOR GL_Facilities_Name IN(」 + @ COLUMNNAMES + ') )AS數據透視表'
EXEC sp_executesql的@SQL
這是否幫助? http://stackoverflow.com/questions/1036745/t-sql-how-to-use-parameters-in-dynamic-sql –