Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chọn số đếm với số lượng 0

Mở rộng theo câu trả lời của KM, bạn cần một bảng ngày giống như một bảng số. Có nhiều ví dụ trên web nhưng đây là một ví dụ đơn giản.

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

Bây giờ bạn có một bảng

thì bạn có thể viết lại truy vấn của mình như sau:

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

Hai lưu ý:Bạn sẽ cần một mệnh đề where để chỉ định phạm vi của mình. Tham gia vào một dàn diễn viên không phải là lý tưởng. Loại trong bảng ngày của bạn phải khớp với loại trong bảng thông thường của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tránh giám sát hoạt động làm ảnh hưởng đến hiệu suất máy chủ SQL của bạn

  2. Lỗi thay đổi loại con trỏ trên kết quả hàm dữ liệu Perl OLE32 MSSQL

  3. Tìm tất cả các phiên bản SQL Server trên nework cục bộ

  4. Truy vấn các giá trị được mã hóa trong cơ sở dữ liệu

  5. Cách thực hiện một thủ tục được lưu trữ bên trong một truy vấn chọn