आपको ad.xDate के महीने और साल दोनों भागों के आधार पर समूह बनाना होगा। वर्ष के केवल बारह महीने होते हैं और आपको अपने परिणामों के शुरुआती दो (14 - 2) महीने दिखाई देने चाहिए, जिनका योग बहुत बड़ा है क्योंकि वे वास्तव में दो कैलेंडर महीनों के संयोजन का प्रतिनिधित्व करते हैं।
यह आपके मूल संस्करण में काम करता है क्योंकि किसी भी महीने में 14 से अधिक दिन होते हैं। यदि आपने उस पुरानी क्वेरी को 31 दिनों (या 28, 29, 30 कुछ महीनों के लिए) से आगे बढ़ाने की कोशिश की तो आपको वही समस्या फिर से मिलती है।
...
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