我试图将一个参数传递到存储过程中,以筛选select语句中的数据,但使用该参数时,它会给出错误消息:列名“sessionid2075”无效。当我在where子句中使用静态值时,这个过程运行良好。你能帮我解决这个问题吗。我检查了所有以前的答案,找不到有效的解决办法。
Alter PROCEDURE [dbo].GetPivotFeeReport
(
@SessionId varchar(50)
)
as
begin
DECLARE @SQL as VARCHAR(MAX)
DECLARE @Columns as VARCHAR(MAX)
SET NOCOUNT ON;
SELECT @Columns =
COALESCE(@Columns + ', ','') + QUOTENAME(GroupHeaderValue)
FROM
(SELECT DISTINCT mgh.GroupHeaderValue
FROM StudentFeeDetail sf
INNER JOIN MasterGroupHeaderValue mgh
ON mgh.GroupHeaderValueId = sf.FeeForId
) AS B
ORDER BY B.GroupHeaderValue
SET @SQL = 'SELECT ClassName,' + @Columns + ',TOTAL
FROM
(
SELECT
distinct mc.className,
sf.FinalAmount,
mgh.GroupHeaderValue,
Sum (isnull(sf.FinalAmount,0)) over (partition by ClassName) AS TOTAL
--0 AS TOTAL
FROM StudentFeeDetail sf
INNER JOIN StudentAdmission sa
ON sa.AdmissionId = sf.AdmissionId
INNER JOIN MasterClass mc
ON mc.ClassId = sa.ClassId
INNER JOIN MasterGroupHeaderValue mgh
ON mgh.GroupHeaderValueId = sf.FeeForId
WHERE sa.SessionId = (' + @SessionId + ') -- this is where I am trying to use the parameter when used static value like this ''SessionId2075'' the procedure works fine
and sf.FeeAmt >0
GROUP BY className, FinalAmount, GroupHeaderValue
) as PivotData
PIVOT
(
sum(FinalAmount)
FOR GroupHeaderValue IN (' + @Columns + ')
) AS PivotResult
ORDER BY (ClassName)
'
EXEC ( @sql)
end
暂无答案!
目前还没有任何答案,快来回答吧!