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

Pilih hitungan dengan 0 hitungan

Memperluas jawaban KM, Anda memerlukan tabel tanggal yang seperti tabel angka. Ada banyak contoh di web tetapi ini yang sederhana.

CREATE TABLE DateList (
 DateValue DATE,
 CONSTRAINT PK_DateList PRIMARY KEY CLUSTERED (DateValue)
 )
 GO
 -- Insert dates from 01/01/2015 and 12/31/2015
 DECLARE @StartDate DATE = '01/01/2015'
 DECLARE @EndDatePlus1 DATE = '01/01/2016'
 DECLARE @CurrentDate DATE = @StartDate

 WHILE @EndDatePlus1 > @CurrentDate
    BEGIN
    INSERT INTO DateList VALUES (@CurrentDate)
    SET @CurrentDate = DATEADD(dd,1,@CurrentDate)
    END

Sekarang Anda memiliki tabel

maka Anda dapat menulis ulang kueri Anda sebagai berikut:

SELECT top (5)  DateValue, isnull(Count(id),0) as Counted
FROM DateList 
LEFT OUTER JOIN Table
  on DateValue = CAST(Created AS DATE) 
GROUP BY DateValue
order by DateValue desc

Dua catatan:Anda memerlukan klausa where untuk menentukan jangkauan Anda. Penggabungan pada gips tidak ideal. Jenis di tabel tanggal Anda harus cocok dengan jenis di tabel biasa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memuat file dll di dalam proyek Java Eclipse

  2. Perbaiki "SQL Server memblokir akses ke PERNYATAAN 'OpenRowset/OpenDatasource' dari komponen 'Kueri Terdistribusi Ad Hoc"

  3. Hapus Data melalui Fungsi Bernilai Tabel di SQL Server

  4. Susun susunan variabel nvarchar di t-sql

  5. 4 Cara Mendaftar Semua Tampilan di Database SQL Server