Generelt var SQL egentlig ikke beregnet til at give "løbende totaler", som du ønsker. Andre RDBMS har introduceret proprietære udvidelser for at levere analytiske funktioner, der muliggør beregninger af denne art, men MySQL mangler sådanne funktioner.
I stedet har man stort set fire muligheder. Uden bestemt rækkefølge:
-
Akkumuler en løbende total i din applikation, mens du går gennem resultatsættet;
-
Ændre dit skema for at holde styr på en løbende total i din database (især godt i situationer som denne, hvor nye data kun tilføjes "til slutningen");
-
Gruppér en selv-deltagelse:
SELECT a.Sale_Date, SUM(a.Stock_Delivered) AS Stock_Delivered, SUM(a.Units_Sold) AS Units_Sold, SUM(b.Stock_Delivered - b.Units_Sold) AS `Stock Balance` FROM sales_report a JOIN sales_report b ON b.Sale_Date <= a.Sale_Date GROUP BY a.Sale_Date
-
Akkumuler den løbende total i en brugervariabel :
SELECT Sale_Date, Stock_Delivered, Units_Sold, @t := @t + Stock_Delivered - Units_Sold AS `Stock Balance` FROM sales_report, (SELECT @t:=0) init ORDER BY Sale_Date