Tsql SQL:将单个结果集转换为表
我已经创建了一个T-SQL查询,该查询统计了一周中每一天在特定时间上课的所有学生。是否有一种方法可以获取此查询,该查询提供快照并显示各种不同“@time”变量的结果,这样我就可以得到一个类似以下内容的表:Tsql SQL:将单个结果集转换为表,tsql,Tsql,我已经创建了一个T-SQL查询,该查询统计了一周中每一天在特定时间上课的所有学生。是否有一种方法可以获取此查询,该查询提供快照并显示各种不同“@time”变量的结果,这样我就可以得到一个类似以下内容的表: Day 09:00 09:30..... etc 1 300 455 2 43 467 3 21 312 柱体上的时间增量是恒定的,理想情况下是可调的,但如果不必要的复杂,每30分钟一次可能是最佳的 查询: DECLARE @time AS VARCHAR
Day 09:00 09:30..... etc
1 300 455
2 43 467
3 21 312
柱体上的时间增量是恒定的,理想情况下是可调的,但如果不必要的复杂,每30分钟一次可能是最佳的
查询:
DECLARE @time AS VARCHAR(5)
SELECT @time = '09:00'
SELECT A.day_of_week,
A.Sum(count_student) AS Students
FROM (
SELECT sttrgprf.register_id,
sttrgprf.day_of_week,
CONVERT(VARCHAR(5), start_time, 108) AS start_time,
CONVERT(VARCHAR(5), end_time, 108) AS end_time,
Count(DISTINCT Student_ID) AS count_student
FROM qlsdat.dbo.Stthstud
INNER JOIN qlsdat.dbo.Sttrgprf AS Sttrgprf
ON Stthstud.register_id = Sttrgprf.register_ID
AND Stthstud.register_group = Sttrgprf.register_group
AND Stthstud.acad_period = Sttrgprf.acad_period
WHERE sttrgprf.Acad_period = ''14/15''
GROUP BY sttrgprf.register_id,
sttrgprf.day_of_week,
sttrgprf.start_time,
sttrgprf.end_time
) AS A
WHERE Start_time <= @time
AND End_time > @time
GROUP BY day_of_week
ORDER BY day_of_week
是的,即使使用PIVOT操作符,也需要动态查询。您需要添加更多关于您想要实现的目标的信息,以便能够帮助您:可能的时间固定值或每次不同的值?、real STATEMENT…编辑以包含您要求的信息。哪种数据位于开始时间、结束时间和周日?开始时间和结束时间是日期时间字段,没有日期信息,星期天是一个数字字段,1-6星期天7不上课。为了添加一些其他上下文,sttrgprf包含关于寄存器开始和结束时间的信息,stthstud包含关于寄存器上学生的信息。