Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Por que a seguinte consulta do SQL Server retorna dados de 12 meses e não dados de 14 meses


Você precisa agrupar por partes de mês e ano de ad.xDate. Há apenas doze meses do ano e você deve ver os primeiros dois (14 - 2) meses de seus resultados com totais muito grandes porque eles representam na verdade uma combinação de dois meses do calendário.

Funcionou na sua versão original porque há mais de 14 dias em qualquer mês. Se você tentou estender essa consulta antiga além de 31 dias (ou 28, 29, 30 por alguns meses), encontrará o mesmo problema novamente.
...
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