一个平均分配的问题

时间:2021-04-18 11:14:55
存在一个仓位商品拣货的任务
表A 预设的仓位拣货任务,empcode预设为NULL
empcode:拣货员工
sp:仓位代码
sku:商品代码

表B  各员工可管理仓位的列表
员工仓位管理
empid:员工代码
sp:仓位代码

现想将A表中的拣货任务平均分配给各员工,如何搞呢?
表A数据
empcode sp      sku 
------------------------------
NULL C 1008673
NULL C N061A00236150
NULL C N061A00236155
NULL B N061A00236160

表B中数据
empid   sp
-----------
0002 B
0002 C
0004 C
001 B
001 C
0015 B
0015 C
303 C
512 C
按照平均分配的原则应该得到
empcode sp      sku
------------------------------
0002 C 1008673
0004 C N061A00236150
001 C N061A00236155
0015 B N061A00236160

2 个解决方案

#1


select distinct B.empid as empcode, B.sp , A.sku
from B
left join A on B.sp=A.sp

#2


可能我描述的不清楚
拣货任务中第一条仓位C 可以由0002,0004,001,0015,512几个员工来拣货,假设按最小编号规则确定
员工0002来拣货,那么第二条拣货任务也是C仓位,那么应优先排除0002员工,在剩下的可管理C仓位的员工中选择,如果除0002以外没有其它员工可管理C仓位那么就选择0002拣第二条拣货任务,基于这种分配思想,如何简单地将拣货任务分配给各个员工?

#1


select distinct B.empid as empcode, B.sp , A.sku
from B
left join A on B.sp=A.sp

#2


可能我描述的不清楚
拣货任务中第一条仓位C 可以由0002,0004,001,0015,512几个员工来拣货,假设按最小编号规则确定
员工0002来拣货,那么第二条拣货任务也是C仓位,那么应优先排除0002员工,在剩下的可管理C仓位的员工中选择,如果除0002以外没有其它员工可管理C仓位那么就选择0002拣第二条拣货任务,基于这种分配思想,如何简单地将拣货任务分配给各个员工?