Ada beberapa cara untuk menangani baris yang hilang, tetapi semuanya adalah tentang memiliki kumpulan data lain untuk digabungkan dengan hasil Anda saat ini.
Itu bisa diturunkan dari hasil Anda, dibuat oleh CTE atau proses lain (seperti contoh Anda), atau (preferensi saya) dengan menggunakan templat permanen untuk bergabung melawan.
Templat dalam kasus Anda bisa berupa tabel tanggal, seperti @datesTBL Anda. Perbedaannya adalah bahwa itu dibuat terlebih dahulu dengan, misalnya, tanggal senilai 100 tahun.
Permintaan Anda mungkin mirip dengan contoh Anda, tetapi saya akan mencoba yang berikut ini...
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
Ini menempatkan templat kalender di KIRI, dan membuat banyak kueri lebih mudah karena Anda tahu bidang tanggal kalender selalu diisi, selalu nilai tanggal saja (tidak ada bagian waktu), berurutan, mudah untuk GROUP BY, dll.