Solo puede usar agregados para comparar en la cláusula HAVING:
GROUP BY ...
HAVING SUM(cash) > 500
El HAVING
requiere que defina una cláusula GROUP BY.
Para obtener la primera fila donde la suma de todo el efectivo anterior es mayor que cierto valor, use:
SELECT y.id, y.cash
FROM (SELECT t.id,
t.cash,
(SELECT SUM(x.cash)
FROM TABLE x
WHERE x.id <= t.id) AS running_total
FROM TABLE t
ORDER BY t.id) y
WHERE y.running_total > 500
ORDER BY y.id
LIMIT 1
Debido a que la función agregada ocurre en una subconsulta, se puede hacer referencia al alias de la columna en la cláusula WHERE.