también puede usar esto sin UNIRSE a la tabla:la SELECCIÓN de salida es solo para ocultar algunas columnas.
SELECT Quantity, `timestamp`, sold_qty
FROM (
SELECT i.*,
@sold_qty := GREATEST(@last_qty - i.`Quantity`,0) as sold_qty,
@last_qty := i.`Quantity` as last_qty
FROM InventoryTest_history i
CROSS JOIN ( SELECT @last_qty := '', @sold_qty := 0) as init
ORDER BY `timestamp`
) as result;
muestra
mysql> SELECT * from InventoryTest_history;
+----+-------------+----------+---------------------+
| id | SKU | Quantity | timestamp |
+----+-------------+----------+---------------------+
| 1 | (L) U-Joint | 985 | 2016-12-27 10:08:58 |
| 2 | (L) U-Joint | 960 | 2016-12-28 10:09:52 |
| 3 | (L) U-Joint | 955 | 2016-12-29 16:01:02 |
+----+-------------+----------+---------------------+
3 rows in set (0,02 sec)
mysql> SELECT Quantity, `timestamp`, sold_qty
-> FROM (
-> SELECT i.*,
-> @sold_qty := GREATEST(@last_qty - i.`Quantity`,0) as sold_qty,
-> @last_qty := i.`Quantity` as last_qty
-> FROM InventoryTest_history i
-> CROSS JOIN ( SELECT @last_qty := '', @sold_qty := 0) as init
-> ORDER BY `timestamp`
-> ) as result;
+----------+---------------------+----------+
| Quantity | timestamp | sold_qty |
+----------+---------------------+----------+
| 985 | 2016-12-27 10:08:58 | 0 |
| 960 | 2016-12-28 10:09:52 | 25 |
| 955 | 2016-12-29 16:01:02 | 5 |
+----------+---------------------+----------+
3 rows in set (0,00 sec)
mysql> SELECT i.*,
-> @sold_qty := GREATEST(@last_qty - i.`Quantity`,0) as sold_qty,
-> @last_qty := i.`Quantity` as last_qty
-> FROM InventoryTest_history i
-> CROSS JOIN ( SELECT @last_qty := '', @sold_qty := 0) as init
-> ORDER BY `timestamp`;
+----+-------------+----------+---------------------+----------+----------+
| id | SKU | Quantity | timestamp | sold_qty | last_qty |
+----+-------------+----------+---------------------+----------+----------+
| 1 | (L) U-Joint | 985 | 2016-12-27 10:08:58 | 0 | 985 |
| 2 | (L) U-Joint | 960 | 2016-12-28 10:09:52 | 25 | 960 |
| 3 | (L) U-Joint | 955 | 2016-12-29 16:01:02 | 5 | 955 |
+----+-------------+----------+---------------------+----------+----------+
3 rows in set (0,00 sec)
mysql>