【发布时间】:2014-05-17 19:52:08
【问题描述】:
我有一个包含以下列的考勤表:
StudentID, Date, Attendance
现在我正在运行查询以获取出勤结果
DECLARE @paramList VARCHAR(MAX)
SET @paramList = STUFF((SELECT DISTINCT ',[' +
CONVERT(varchar(10), [Date], 20) + ']'
FROM AttendenceT
WHERE Date > '2014-01-01' AND Date < '2014-01-31'
FOR XML PATH('') ) ,1,1,'')
DECLARE @query NVARCHAR(MAX)
SET @query = 'SELECT StudentID, ' + @paramList
+ ' FROM( SELECT * FROM AttendenceT)src
PIVOT(SUM(Attendence) FOR Date IN (' + @paramList + ')) pvt'
EXEC sp_executesql @query
结果
结果没问题,除了考勤表中缺少天数,结果中没有可用的列。我想修改查询,以便即使出勤表中不存在日期,其列仍然可用。
请注意,我不是 SQL 专家。我使用 google 创建了这个查询,并且大部分是过去问题的 stackoverflow 答案。
【问题讨论】:
标签: sql sql-server pivot