我有一个时间表查询,如下所示:
User TimesheetStart TimesheetEnd
Allen 2014-07-01 2014-07-15
Allen 2014-08-01 2014-08-15
Allen 2014-08-16 2014-08-31
我的日历视图看起来像这样。 [Date]列定义了该月的第一个日期,第15个,第16个和最后一个日期。
我需要一个返回以下内容的查询。我无法绕过我需要的JOIN。我在日历视图上尝试了RIGHT JOIN,但是无法正常工作。
User TimesheetStart TimesheetEnd TimesheetPeriodBeginning
Allen 2014-07-01 2014-07-15 2014-07-01
Allen NULL NULL 2014-07-16
Allen 2014-08-01 2014-08-15 2014-08-01
Allen 2014-08-16 2014-08-31 2014-08-16
Allen NULL NULL 2014-09-01
Allen NULL NULL 2014-09-16
NULL
表示缺少时间表条目。
到目前为止我有:
SELECT ts.Fields (truncated for clarity)
,calendar.Fields (truncated for clarity)
FROM [dbo].[timesheet] AS ts
--this join isn't working...
RIGHT JOIN [dbo].[v_Timesheet_Periods] AS calendar
ON ts.StartDate = calendar.[Date]
答案 0 :(得分:0)
看起来您的结束数据在您的加入中重叠。 你需要考虑时间吗? 那么你应该使用> =和a<为了结束?
SELECT ts.Fields (truncated for clarity)
,calendar.Fields (truncated for clarity)
FROM [dbo].[timesheet] AS ts
--this join isn't working...
RIGHT OUTER JOIN [dbo].[v_Timesheet_Periods] AS calendar
ON ts.StartDate >= tsPeriods.[Date]
AND ts.EndDate < tsPeriods.[Date]