Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Perché la seguente query di SQL Server restituisce dati di 12 mesi e non dati di 14 mesi

È necessario raggruppare per mese e anno le parti di ad.xDate. Ci sono solo dodici mesi dell'anno e dovresti vedere i primi due (14 - 2) mesi dei tuoi risultati con totali troppo grandi perché in realtà rappresentano una combinazione di due mesi di calendario.

Ha funzionato nella tua versione originale perché ci sono più di 14 giorni in ogni mese. Se hai provato a estendere quella vecchia query oltre i 31 giorni (o 28, 29, 30 per alcuni mesi), riscontri sempre lo stesso problema.

...
SELECT
    'playing' As activity,
    min(ad.xDate) As xDate, 
    Isnull(sum(t.TimePerDay), 0) As TimePerDay
FROM AllDates As ad Left Outer Join @test As t On ad.xDate = t.date
GROUP BY Year(ad.xDate), Month(ad.xDate) /* <--- change here */
ORDER BY xDate