LEAST(p.running_total, s.running_total) - GREATEST(s.running_total - s.cantitate_prim, p.running_total - p.cantitate) AS cantitate FROM ( SELECT p1.id_vanz, p1.data, p1.cantitate, p1.cod_p, SUM(p2.cantitate) AS running_total FROM det_note AS p1 JOIN det_note AS p2 ON p1.cod_p = p2.cod_p AND ( p1.data > p2.data OR p1.data = p2.data AND p1.id_vanz >= p2.id_vanz) GROUP BY p1.cod_p, p1.data, p1.id_vanz ) AS p JOIN ( SELECT s1.id_achiz, s1.data, s1.cantitate_prim, s1.cod_p, SUM(s2.cantitate_prim) AS running_total FROM achizitii AS s1 JOIN achizitii AS s2 ON s1.cod_p = s2.cod_p AND ( s1.data > s2.data OR s1.data = s2.data AND s1.id_achiz >= s2.id_achiz) GROUP BY s1.cod_p, s1.data, s1.id_achiz ) AS s ON p.cod_p = s.cod_p AND s.running_total - s.cantitate_prim < p.running_total AND p.running_total - p.cantitate < s.running_total ORDER BY p.data, s.id_achiz