CTE gibt einen unten ErgebnisIgnorieren aktuelle Liste von CTE
Name | StartDateTime | EndDateTime
--------------------+-------------------------+------------------------
Hair Massage | 2014-02-15 09:00:00.000 | 2014-02-15 10:00:00.000
Hair Massage | 2014-02-15 10:00:00.000 | 2014-02-15 11:00:00.000
(X)Hair Massage | 2014-02-23 09:00:00.000 | 2014-02-23 10:00:00.000
(X)Hair Cut | 2014-02-20 12:15:00.000 | 2014-02-20 13:00:00.000
Hair Cut | 2014-03-07 11:30:00.000 | 2014-03-07 12:15:00.000
Auch habe ich Urlaub
Id | StartDateTime | EndDateTime
-------------+--------------------+-------------------
1 | 20140223 00:00:00 | 20140224 23:59:00
Und EventBooking
EventId | StartDateTime | EndDateTime
-------------+-------------------------+------------------------
1 | 2014-02-20 12:15:00.000 | 2014-02-20 13:00:00.000
Ich möchte die Daten entfernen fällt unter holidays and EventBooking
von meinem CTE. Ich meine die (X)
recods von meinem CTE ist mein
RESULT=CTE- BookedSchedule-Holidays
with HoliDaysCte2 as
(
select StartdateTime,EndDateTime from Holidays
union all
select StartdateTime,EndDateTime from EventBooking
)
SELECT
Name,
StartDateTime,
EndDateTime
FROM CTE WHERE not exists (select 1
from HoliDaysCte2 h
where cast(a.RepeatEventDate as DATETIME) between
cast(h.startdatetime as DATETIME)
and cast(h.enddatetime as DATETIME)
)
Hier entfernen SQL FIDDLE DEMO
Da Sie in Ihrem Design keine Kalendereinheit haben, ist es unvermeidlich, dass Abfragen mit Table-Scans das gewünschte Ergebnis liefern. BTW Aktuelle Tabellen müssen auf Datumsfeldern zusammengefügt werden, das bedeutet eine nicht effektive, aber effiziente Lösung. –
Haben Sie meine Anfrage versucht? Es gibt genau das zurück, was Sie wollen. – dnoeth