0

我有一张记录一天日程开始和结束的表格:

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

ETC

关于如何生成第二个表以便我可以简单地添加 Client1ID 和 Clinet2ID 的任何帮助将不胜感激。

谢谢

4

1 回答 1

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

演示

于 2013-07-08T21:38:12.113 回答