willdavis
2021-10-28 10:21
浏览 9

SQL server 数据分配算法

表的明细中,分别有多笔记录(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

求算法

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

相关推荐 更多相似问题