我有一个select查询的结果,它按顺序(按优先级)按特定顺序返回(例如)10,000行
我有4名员工,我需要在分配中平均分配(所以每个人都有2,500名)和优先级(所以每个人都要获得相同数量的高优先级工作才能完成)
我正在使用两套简单的套装......
我的初始结果集10,000看起来像这样:
Job Due Date Assignment
a 11/1/2015
b 11/1/2015
c 11/2/2015
d 11/3/2015
e 11/4/2015
f 11/4/2015
g 11/4/2015
h 11/4/2015
i 11/5/2015
我的员工表很简单:
Employees
Tom
Jerry
Susan
Rick
我需要最终结果看起来像:
Job Due Date Assignment
a 11/1/2015 Tom
b 11/1/2015 Jerry
c 11/2/2015 Susan
d 11/3/2015 Rick
e 11/4/2015 Tom
f 11/4/2015 Jerry
g 11/4/2015 Susan
h 11/4/2015 Rick
i 11/5/2015 Tom
如何迭代我的10,000条记录,一次分配我的4名员工?
答案 0 :(得分:2)
假设您只需要按日期划分工作,您可以使用row_number对行0 ... 3进行编号,并为此类员工创建相同类型的编号,然后只更新值:
; with A as (
select row_number() over (order by [Due Date]) % 4 as EmpNo, *
from Assignment
), E as (
select row_number() over (order by (select null)) % 4 as EmpNo, *
from Employees
)
update A
set A.Employee = E.Employee
from
E where E.EmpNo = A.EmpNo
中的示例