यह सुंदर नहीं है, क्योंकि इसे आपकी तालिका की चार प्रतियों को अपने साथ जोड़ना है, जो सभी प्रकार के प्रदर्शन दर्द को प्रभावित कर सकता है (मैं दृढ़ता से आपको id
. पर अनुक्रमणिका रखने की सलाह दी जाती है और date
)... लेकिन यह चाल चलेगा:
SELECT y.report_date, SUM(x.value)
FROM mytable AS x
NATURAL JOIN (
SELECT a.id, b.date AS report_date, MAX(c.date) AS date
FROM (SELECT DISTINCT id FROM mytable) a JOIN
(SELECT DISTINCT date FROM mytable) b JOIN
mytable AS c ON (c.id = a.id AND c.date <= b.date)
GROUP BY a.id, b.date
) AS y
GROUP BY y.report_date
इसे sqlfiddle पर देखें ।