2015-10-23 1 views
0

у меня есть результат выбора запроса, который возвращает (например) 10000 строк в определенном порядке по последовательности (по приоритету)SQL-петля через набор результаты для назначения сотрудников

У меня 4 сотрудников, что мне нужно назначить в равной степени в распределении (так что каждый получает 2500) и по приоритету (так что каждый получает сумму equalish высокого приоритета работы для завершения)

Я работаю с двумя простыми наборами ...

Моего первоначальным набором результатов из 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 

Как я могу перебирать мои 10000 записей, присваивают мои 4 сотрудников на время?

+0

Как? С SQL. Что вы пробовали и какую ошибку вы получили? –

ответ

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 

Пример в SQL Fiddle

+0

Спасибо, Джеймс, это сработало так, как мне было нужно! – JakPackage

Смежные вопросы