课程表排课sql

jiang270606112 2019-06-20 08:30:09
课程表 table Schedule
开始日期 StartDate 2019-02-02
结束日期 EndDate 9999-12-12
班级: ClassId

上课时间表 ScheduleTime
课程表ID:ScheduleId
上课时间:StartTime 13:00
下课时间:endTime 14:00
周几上课:Weekly 2

我想查询 一个时间段所有的课程表 咋查??求大神指教


备注: 主表记录 课程表有效时间段。 次表是记录每周几几点上下课。

我需要查询出 2022-1-1到2023-1-1 都哪天有课。。。
希望输出:
[b]
上课日期 上课时间 周几 上班班级
[/b]
...全文
255 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2019-06-22
  • 打赏
  • 举报
回复
看不出课程表和上课时间表有什么可关联的条件...
RINK_1 2019-06-21
  • 打赏
  • 举报
回复
试试,没具体测过。


DECLARE @START_DATE DATE
DECLARE @END_DATE DATE

SET @START_DATE='2022-01-01'
SET @END_DATE='2023-01-01'

;WITH CTE
AS
(SELECT NUMBER,DATEADD(DAY,NUMBER,@START_DATE) AS SINGLE_DATE,
 CASE WHEN DATEPART(WEEKDAY,DATEADD(DAY,NUMBER,@START_DATE))=1 THEN 7 ELSE DATEPART(WEEKDAY,DATEADD(DAY,NUMBER,@START_DATE))-1 END AS SINGLE_DAY
FROM MASTER.DBO.SPT_VALUES 
WHERE NUMBER<=DATEDIFF(DAY,@START_DATE,@END_DATE)
AND TYPE='P')


SELECT C.SINGLE_DATE,A.StartTime,A.Weekly,B.ClassId
 FROM ScheduleTime A
 JOIN Schedule B ON A.ScheduleId=B.ScheduleId
 JOIN CTE C ON C.SINGLE_DATE BETWEEN B.StartDate AND B.EndDate AND A.Weekly=C.SINGLE_DAY

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧