Er zijn verschillende manieren om met ontbrekende rijen om te gaan, maar ze hebben allemaal te maken met een andere set gegevens die u kunt combineren met uw huidige resultaten.
Dat kan worden afgeleid van uw resultaten, gemaakt door een CTE of ander proces (zoals uw voorbeeld), of (mijn voorkeur) door een permanent sjabloon te gebruiken om mee te doen.
De sjabloon in uw geval kan gewoon een tabel met datums zijn, zoals uw @datesTBL. Het verschil is dat het van tevoren is gemaakt met bijvoorbeeld 100 jaar aan datums.
Uw vraag kan dan lijken op uw voorbeeld, maar ik zou het volgende proberen...
SELECT
dt.tempDate ,
InstructorID, EventStart,
EventEnd, cancelled,
cancelledInstructor,
EventType, DevName,
Room, SimLocation,
ClassLocation, Event,
Duration, TrainingDesc,
Crew, Notes,
LastAmended, InstLastAmended,
ChangeAcknowledged, Type,
OtherType, OtherTypeDesc,
CourseType
FROM
@datesTBL dt
LEFT OUTER JOIN
OpsInstructorEventsView iv
ON iv.EventStart >= dt.tempDate
AND iv.EventStart < dt.tempDate + 1
AND iv.InstructorID = @InstructorID
WHERE
dt.tempDate >= @StartDate
AND dt.tempDate <= @EndDate
ORDER BY
dt.tempDate,
iv.EventStart
Dit plaatst de kalendersjabloon aan de LINKERKANT, en maakt zo veel zoekopdrachten gemakkelijker omdat u weet dat het datumveld van de kalender altijd gevuld is, altijd alleen een datumwaarde (geen tijdsdeel) is, in orde is, eenvoudig te GROUPEREN OP, enz.