У меня возникла проблема в следующем SQL-запросе. Когда я выполняю этот запрос без условия, в котором он работает нормально ... но когда я использую, где условие не работает, оно дает следующее сообщение об ошибке ..Где условие в sql PIVOT
Msg 137, Level 15, State 2, Line 4 Должен объявить скалярную переменную «@ courseid1».
ALTER PROCEDURE [dbo].[SP_Attendance]
@courseid as int=null, @subjid int=null
AS
Declare @colList varchar(max)
Declare @qry varchar(max)
Declare @courseid1 as [email protected],
@subjid1 [email protected]
SET @colList = STUFF((SELECT distinct ',' + QUOTENAME(SA.Attend_Date)
FROM Student_Attendance_Sheet SA
FOR XML PATH(''), TYPE
).value('/', 'NVARCHAR(MAX)')
,1,1,'')
SET @qry = 'SELECT Roll_No, EnrollmentNo, STUD_FNAME + STUD_MNAME + STUD_LNAME as [Student Name] , '[email protected]+'
FROM (
select SA.Roll_No, SA.Attend_Date, SA.Attendance from Student_Attendance_Sheet SA
where (SA.Course_ID = [email protected]+) and (SA.Subject_ID = [email protected]+)
) as s
PIVOT
(
MAX(Attendance)
FOR Attend_Date IN (' + @colList + ')
) pvt '
print(@qry)
Exec(@qry)
Exec SP_Attendance 2, 3
Еще одна вещь .. когда я использую, когда условие в
SET @colList = STUFF((SELECT distinct ',' + QUOTENAME(SA.Attend_Date)
FROM Student_Attendance_Sheet SA
where (SA.Course_ID = [email protected]+) and (SA.Subject_ID = [email protected]+)
FOR XML PATH(''), TYPE
).value('/', 'NVARCHAR(MAX)')
,1,1,'')
Он работает, но нет фильтрации .. так что я должен использовать, где состояние вышеупомянутым образом ... Пожалуйста, помогите мне решить эту проблему ... Спасибо