我有以下的架构,我已经略微简化:SQL返回缺少的行
CREATE TABLE [dbo].[Header] (
[HeaderId] [int] IDENTITY(1,1) NOT NULL,
[StaffId] [int] NOT NULL,
[WeekEnding] [smalldatetime] NOT NULL,
...
)
CREATE TABLE [dbo].[Staff] (
[StaffId] [int] NOT NULL,
[FirstWeekEnding] [smalldatetime] NULL,
...
)
,STAFFID页眉表的外键。
标题表跟踪与员工相关的数据(在未显示的子表中),并且对于给定的星期,如果子表中的数据存在,则将存在用于“周末”的条目。在这种情况下,“周末”总是一个星期天。因此,样本数据看起来是这样的:
HeaderId StaffId WeekEnding
---------------------------------
1 1 13/02/2011
2 1 20/02/2011
etc...
对员工表中的“FirstWeekEnding”值是他们开始在Header表跟踪信息的第一次约会。
我的问题
考虑的第一个星期结束的每一个工作人员的日期,我该如何构造查询,这将使我从报头表中的所有缺失的记录到现在的日期?
例如,给出以下数据:
StaffId FirstWeekEnding
---------------------------
1 02/01/2011
HeaderId StaffId WeekEnding
---------------------------------
1 1 02/01/2011
2 1 09/01/2011
3 1 16/01/2011
4 1 13/02/2011
5 1 20/02/2011
其结果将是:
StaffId WeekEnding
---------------------
1 23/01/2011
1 30/01/2011
1 06/02/2011
理想情况下,查询应该处理多个工作人员,由他们进行分组STAFFID。
请邮寄到现在为止您编写的代码。人们通常不喜欢只为你写代码。事实上,这是一个工作描述,而不是一个问题。 – 2011-02-23 00:09:22
@Mitch:这是一个有效的IMO问题。 – mellamokb 2011-02-23 00:12:46
@mellamokb:没有任何海报试图解决问题的证据,它只是一个工作描述。 – 2011-02-23 00:15:41