Musisz pogrupować według miesiąca i roku części ad.xDate. Jest tylko dwanaście miesięcy w roku i powinieneś zobaczyć najwcześniejsze dwa (14 - 2) miesiące wyników z sumami, które są zbyt duże, ponieważ w rzeczywistości reprezentują one kombinację dwóch miesięcy kalendarzowych.
To działało w Twojej oryginalnej wersji, ponieważ w każdym miesiącu jest więcej niż 14 dni. Jeśli próbowałeś przedłużyć to stare zapytanie o więcej niż 31 dni (lub 28, 29, 30 przez kilka miesięcy), ponownie napotykasz ten sam problem.
...
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