我正在开发一个具有一些调度功能的应用程序。作为其中的一部分,我需要选择一个人员列表,以及他们是否在一周的某个时间段安排了一些事情。
一周中的周期数是可变的,因此它们存储在参考表中,例如:
Period Reference Table
id name start end day
------------------------------------------------------------------
1 Morning 1900-01-01 4:00:00 1900-01-01 11:00:00 MON
2 Afternoon 1900-01-01 14:00:00 1900-01-01 20:00:00 MON
3 Night 1900-01-01 20:00:00 1900-01-01 24:00:00 MON
4 Morning 1900-01-01 4:00:00 1900-01-01 11:00:00 TUE
5 Afternoon 1900-01-01 14:00:00 1900-01-01 20:00:00 TUE
6 Night 1900-01-01 20:00:00 1900-01-01 24:00:00 TUE
我还有一个“人员参考”表和一个“人员日程”表。“person schedule”表只存储一个人在某个时间段内安排了某事的记录,这里是一个简化的例子:
Person Schedule Table
id person_id period_id
------------------------------
1 1 2
2 1 3
3 2 2
4 2 3
5 2 4
现在我需要从这三个表中选择每个人的完整时期列表,以及他们在该时期是否有时间表记录(1 或 0)。换句话说,我需要为上面的示例数据获取此结果集:
person_id period_id is_scheduled
----------------------------------------
1 1 0
1 2 1
1 3 1
1 4 0
1 5 0
1 6 0
2 1 0
2 2 1
2 3 1
2 4 1
2 5 0
2 6 0
是否可以在不进入动态 SQL 的情况下使用 select 语句来执行此操作?
这一切都是使用 SQL Server 2000 完成的