एसक्यूएल में ऐसा करना वास्तव में आश्चर्यजनक रूप से कठिन है। ऐसा करने का एक तरीका यह है कि 1 से 31 तक संख्याएं उत्पन्न करने के लिए यूनियन ऑल के साथ एक लंबा चयन कथन होना चाहिए। यह सिद्धांत को प्रदर्शित करता है लेकिन मैं स्पष्टता के लिए 4 पर रुक गया:
SELECT MonthDate.Date, COALESCE(SUM(`values`), 0) AS Total
FROM (
SELECT 1 AS Date UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
--
SELECT 28 UNION ALL
SELECT 29 UNION ALL
SELECT 30 UNION ALL
SELECT 31) AS MonthDate
LEFT JOIN Table1 AS T1
ON MonthDate.Date = DAY(T1.Date)
AND MONTH(T1.Date) = 1 AND YEAR(T1.Date) = 2010
WHERE MonthDate.Date <= DAY(LAST_DAY('2010-01-01'))
GROUP BY MonthDate.Date
इन मानों को संग्रहीत करने और इसके बजाय इसके साथ जुड़ने के लिए तालिका का उपयोग करना बेहतर हो सकता है।
परिणाम:
1, 34
2, 10
3, 0
4, 7