Най-общо казано, SQL всъщност не е предназначен да дава "текущи суми", както желаете. Други RDBMS са въвели собствени разширения за предоставяне на аналитични функции, които позволяват изчисления от този вид, но MySQL няма такива функции.
Вместо това едно общо взето има четири опции. В никакъв конкретен ред:
-
Натрупвайте текуща сума във вашето приложение, докато преглеждате набора от резултати;
-
Променете схемата си, за да следите текущата сума във вашата база данни (особено добре в ситуации като тази, когато новите данни винаги се добавят само „до края“);
-
Групирайте самостоятелно присъединяване:
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
-
Натрупване на текущата сума в потребителска променлива :
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