add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE t1 (`order` CHAR(3), item CHAR(3), Qty INT);
INSERT INTO t1 VALUES
('ABC' , 'IA1' , 5),
('ABC' , 'IA2' , 6),
('ABC' , 'IA3' , 1),
('ABD' , 'IA4' , 2),
('ABD' , 'IA5' , 2),
('ABE' , 'IA6' , 1),
('ABE' , 'IA7' , 2);

CREATE TABLE t2 (`order` CHAR(3), Qty INT);
INSERT INTO t2 VALUES
('ABC' , 9),
('ABD' , 3),
('ABE' , 3);
SELECT t1.*,
CASE WHEN t2.Qty <SUM(t1.Qty) OVER (PARTITION BY `order` ORDER BY t1.item)
THEN GREATEST(t2.Qty + t1.Qty - SUM(t1.Qty) OVER (PARTITION BY `order` ORDER BY t1.item), 0)
ELSE t1.Qty
END ordered_Qty
FROM t1
JOIN t2 USING (`order`)
order item Qty ordered_Qty
ABC IA1 5 5
ABC IA2 6 4
ABC IA3 1 0
ABD IA4 2 2
ABD IA5 2 1
ABE IA6 1 1
ABE IA7 2 2