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

SQL Server:Cara memilih semua hari dalam rentang tanggal meskipun tidak ada data selama beberapa hari

Anda dapat menggunakan CTE rekursif untuk membuat daftar Anda selama 30 hari, lalu menggabungkannya ke data Anda

--test
select cast('05 jan 2011' as datetime) as DT, 1 as val into #t
union all select CAST('05 jan 2011' as datetime), 1 
union all select CAST('29 jan 2011' as datetime), 1 

declare @start datetime = '01 jan 2011'
declare @end   datetime = dateadd(day, 29, @start)

;with amonth(day) as
(
    select @start as day
        union all
    select day + 1
        from amonth
        where day < @end
)
select amonth.day, count(val)
    from amonth 
    left join #t on #t.DT = amonth.day
group by amonth.day


>>

2011-01-04 00:00:00.000 0
2011-01-05 00:00:00.000 2
2011-01-06 00:00:00.000 0
2011-01-07 00:00:00.000 0
2011-01-08 00:00:00.000 0
2011-01-09 00:00:00.000 0
...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATENAME() Contoh di SQL Server

  2. Cara Mengaktifkan SQL Server Agent XPs menggunakan T-SQL

  3. Apa itu prosedur tersimpan?

  4. Bagaimana Anda memotong semua tabel dalam database menggunakan TSQL?

  5. Menghubungkan aplikasi inti ASP.NET Anda ke instance lokal SQLServer