Bạn cần phải nhóm theo cả tháng và năm của ad.xDate. Chỉ có mười hai tháng trong năm và bạn sẽ thấy kết quả của hai (14 - 2) tháng sớm nhất với tổng số quá lớn vì chúng thực sự đại diện cho sự kết hợp của hai tháng dương lịch.
Nó hoạt động trong phiên bản gốc của bạn vì có hơn 14 ngày trong bất kỳ tháng nào. Nếu bạn đã cố gắng kéo dài truy vấn cũ đó quá 31 ngày (hoặc 28, 29, 30 trong một số tháng) thì bạn lại tìm thấy cùng một vấn đề.
...
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