我有一张表记录了一天的开始和结束时间表:
ScheduleID VenueID Date StartTime EndTime
1 1 14/07/2013 10:30 16:30
2 1 15/07/2013 09:30 16:30
3 2 16/07/2013 09:00 16:00
我需要创建一个基于开始和结束时间自填充30分钟时间段的表,所以它看起来像这样:
TimetableID VenueID Date Time_Slots Client1ID Client2ID
1 1 14/07/2013 10:30 45 Null
2 1 14/07/2013 11:00 67 78
3 1 14/07/2013 11:30 104 Null
4 1 14/07/2013 12:00 112 56
等
有关如何生成第二个表以便我可以简单地添加Client1ID和Clinet2ID的任何帮助将非常感激。
由于
答案 0 :(得分:2)
不确定你的意思'self populating table'
并且你没有说clientid
来自哪里(所以我会把它留给你)。但你可以得到一个30分钟时间段的结果集,如下所示
WITH cte AS
(
SELECT id, venue, schedule_date,
start_time time_slots, end_time
FROM schedule
UNION ALL
SELECT schedule.id, schedule.venue, schedule.schedule_date,
DATEADD(MINUTE, 30, cte.time_slots) time_slots,
schedule.end_time
FROM schedule
INNER JOIN cte
ON cte.id = schedule.id
AND cte.time_slots < schedule.end_time
)
SELECT ROW_NUMBER() OVER(ORDER BY id, time_slots),
venue,
schedule_date,
time_slots
FROM cte
ORDER BY id, time_slots