Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Memilih semua tanggal dari tabel dalam rentang tanggal dan memasukkan 1 baris per tanggal kosong

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyimpan kolom 'Titik' dari ShapeFile

  2. DBA - Cara Membunuh Semua Proses Basis Data Di SQL Server

  3. Hitungan Kumulatif SQL

  4. Bagaimana cara mendapatkan semua kesalahan dari semua paket SSIS dalam sebuah solusi

  5. SQL Server:Kolom ke Baris