这个问题参考了我的最后一个问题:SQL Server 08: Union over while
我正在编写一个 CTE 来执行该问题中描述的操作(在给定的天数内找到可用的时间段。
我写了一个 CTE,但我不太明白如何让我的日期增加和限制。就目前而言,它仅从 2011-07-30 (@ArrivalDate) 获取数据。任何人都可以向我解释如何正确增加它,以及我哪里出错了?
更新:我想出了一个更好的查询来获取所有可用的时间段
(SELECT TS.UKTNN, TS.TimeSlotID, TS.TimeSlotGroupID
FROM FittingCentreTimeSlotGroupTimeSlots TS)
EXCEPT
(Select BFD.UKTNN, BFD.TimeSlotID, BFD.TimeSlotGroupID
From BookedFittingDates BFD)
Run Code Online (Sandbox Code Playgroud)
这是评论中要求的表结构:
TimeSlotGroup UKTNN,TimeSlotGroupID,TimeSlotGroupDesc
TimeSlotGroupTimeSlots UKTNN,TimeSlotID,TimeSlotGroupID,TimeSlotDesc
BookedDates UKTNN,TimeSlotGroupID,TimeSlotID,日期
这是我现有的 CTE 现在的样子
Use[DEV_UKTN_DATA]
GO
DECLARE @UKTNN int;
DECLARE @ArrivalDate date;
DECLARE @NumDays int;
DECLARE @LoopDate date;
SET @UKTNN = 7;
SET @ArrivalDate = '2011-07-30';
SET …Run Code Online (Sandbox Code Playgroud)