我有20行的列表。每行代表要分配的任务列表。
创建表T(TASK_ID为STRING,ASSIGNER_ID为STRING)。 INSERT INTO T('ABCD',NULL)INSERT INTO T('BCDE',NULL)等等...
我的目的是从列表(即Jon-Joe-Dave-Mike)中随机分配每个任务,但是每个人的总负担必须相等。
在这种情况下(20个任务-4人),最大值为5。 如何将任务分配给SQL Server中的任务?
非常感谢!
答案 0 :(得分:1)
此语法将为每个人分配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