SQL Server - назначить строку из списка таким же образом - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть список из 20 строк.Каждая строка представляет собой список задач, которые должны быть назначены.

CREATE TABLE T (TASK_ID в качестве STRING, ASSIGNER_ID в качестве STRING).INSERT INTO T ('BCDE', NULL) INSERT INTO T ('BCDE', NULL) INSERT INTO T ('CDEF', NULL) и т. Д ....

Моя цель - назначать случайным образом каждыйзадание из списка (т.е. Jon-Joe-Dave-Mike), но общая нагрузка для каждого человека должна быть равна.

В этом случае (20 заданий - 4 человека) максимальное значение равно 5. КакЯ могу назначить задачи для тех, кто в SQL Server?

Большое спасибо!

1 Ответ

0 голосов
/ 28 сентября 2018

Этот синтаксис назначит 5 случайных задач каждому человеку:

DECLARE @p table(id int identity, name varchar(40))
DECLARE @t table(id int, taskname varchar(50))

INSERT @p values('Joe'),('Mark'),('Demi'),('Thomas')

INSERT @t(id)
VALUES(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11)
      ,(12),(13),(14),(15),(16),(17),(18),(19),(20)

UPDATE @t set taskname = 'task' + cast(id as varchar(2))

;WITH CTE as
(
  SELECT taskname, ntile(4) over(order by newid()) rnd_id
  FROM @t
)
SELECT p.name, cte.taskname
FROM CTE
JOIN @p p
ON p.id = cte.rnd_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...