I have written a dynamic pivot query for a column 'Total' which is working fine but I want to create dynamic pivot query on multiple columns in SQL Server, but it is showing me error if I use multiple columns in aggregate function.
My query for single column is like this
Declare @S nvarchar(1024)
set @S=''
Select @S = @S + a.[Column] +','
from
(SELECT distinct
ISNULL(dbo.tbSubjects.SubCode, 'NoColumnName') as [Column]
FROM
dbo.tbAttendance
INNER JOIN
dbo.tbAttendanceMaster ON dbo.tbAttendance.MasterAID = dbo.tbAttendanceMaster.AtdID
INNER JOIN
dbo.tbStudent ON dbo.tbAttendance.StID = dbo.tbStudent.StudentID
INNER JOIN
dbo.tbSubjects ON dbo.tbAttendanceMaster.SubID = dbo.tbSubjects.SubID
LEFT OUTER JOIN
dbo.tbSemester ON dbo.tbSubjects.SemID = dbo.tbSemester.SemID) as a
set @S = LEFT(@S, LEN(@S) - 1)
print @S
set @S = 'select Name,'+@S+' from(SELECT distinct tbStudent.Name, dbo.tbSubjects.SubCode, dbo.fnTotalDays(dbo.tbAttendanceMaster.SubID,
dbo.tbStudent.StudentID) AS Total
FROM dbo.tbAttendance INNER JOIN
dbo.tbAttendanceMaster ON dbo.tbAttendance.MasterAID = dbo.tbAttendanceMaster.AtdID INNER JOIN
dbo.tbStudent ON dbo.tbAttendance.StID = dbo.tbStudent.StudentID INNER JOIN
dbo.tbSubjects ON dbo.tbAttendanceMaster.SubID = dbo.tbSubjects.SubID LEFT OUTER JOIN
dbo.tbSemester ON dbo.tbSubjects.SemID = dbo.tbSemester.SemID ) sq
pivot(sum(Total) for SubCode IN('+@S+') ) as pt
'
print @S
Execute sp_Executesql @S