sql >> Databáze >  >> RDS >> Sqlserver

Vyberte počet s počtem 0

Když rozšíříte odpověď KM, potřebujete tabulku dat, která je jako tabulka čísel. Na webu je mnoho příkladů, ale zde je jeden jednoduchý.

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

Nyní máte stůl

pak můžete svůj dotaz přepsat následovně:

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

Dvě poznámky:Ke specifikaci rozsahu budete potřebovat klauzuli where. Spojení při obsazení není ideální. Typ v tabulce dat by měl odpovídat typu ve vaší běžné tabulce.



  1. Jak omezit přístup k portu MySQL

  2. Objasnění časového pásma PHP/MySQL

  3. Klíčové slovo LIMIT na MySQL s připraveným příkazem

  4. Jak se připojit k prázdnému stolu