sql >> Base de Datos >  >> RDS >> Sqlserver

Por qué la siguiente consulta de SQL Server devuelve datos de 12 meses y no datos de 14 meses

Debe agrupar por partes de mes y año de ad.xDate. Solo hay doce meses del año y debería estar viendo los primeros dos meses (14 - 2) de sus resultados con totales que son demasiado grandes porque en realidad representan una combinación de dos meses calendario.

Funcionó en su versión original porque hay más de 14 días en cualquier mes. Si trató de extender esa consulta anterior más allá de los 31 días (o 28, 29, 30 durante algunos meses), encontrará el mismo problema nuevamente.

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