You are on page 1of 1

SELECT

s.id_achiz, p.id_vanz, p.cod_p,


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

You might also like