Es ist nicht schön, da es vier Kopien Ihrer Tabelle mit sich selbst verbinden muss, was alle möglichen Leistungsprobleme verursachen könnte (ich stark raten Ihnen, Indizes auf id
zu haben und date
)... aber das wird den Zweck erfüllen:
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
Sehen Sie es auf sqlfiddle .