Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pourquoi la requête SQL Server suivante renvoie des données sur 12 mois et non sur 14 mois

Vous devez regrouper par mois et par année les parties de ad.xDate. Il n'y a que douze mois dans l'année et vous devriez voir les deux (14 - 2) premiers mois de vos résultats avec des totaux trop importants car ils représentent en fait une combinaison de deux mois calendaires.

Cela a fonctionné dans votre version d'origine car il y a plus de 14 jours dans un mois. Si vous avez essayé d'étendre cette ancienne requête au-delà de 31 jours (ou 28, 29, 30 pour certains mois), vous rencontrez à nouveau le même problème.

...
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