Tsql SQL:将单个结果集转换为表

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

我已经创建了一个T-SQL查询,该查询统计了一周中每一天在特定时间上课的所有学生。是否有一种方法可以获取此查询,该查询提供快照并显示各种不同“@time”变量的结果,这样我就可以得到一个类似以下内容的表:

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包含关于寄存器上学生的信息。