表的明细中,分别有多笔记录(A 有4笔,B有3笔),比如A有一个分配总数量(100,1000,2000不等),按序号(0001,0002等)依次分配。如果总数量超过A的汇总数量,则多余的数量,叠加到最后一笔
Create table #car_parts(docno nvarchar(30),itemno nvarchar(10),pcode nvarchar(30),qty numeric(18,4) )
Insert #car_parts
select 'PO2021013','0001','A001',100 union all
select 'PO2021013','0002','A001',200 union all
select 'PO2021013','0003','A001',300 union all
select 'PO2021013','0004','B001',400 union all
select 'PO2021013','0005','B001',500 union all
select 'PO2021013','0006','A001',100 union all
select 'PO2021013','0007','B001',200
比如A的分配总数量为500,则分配如下
A 0001,100 -->100
A 0002,200 -->200
A 0003,300 -->200
比如A的分配总数量为800,则分配如下
A 0001,100 -->100
A 0002,200 -->200
A 0003,300 -->300
A 0006,300 -->200
比如A的分配总数量为1000,则分配如下
A 0001,100 -->100
A 0002,200 -->200
A 0003,300 -->300
A 0006,300 -->400
求算法