Sql server 根据现有编号将数据分配到组中

Sql server 根据现有编号将数据分配到组中,sql-server,tsql,sql-server-2008-r2,Sql Server,Tsql,Sql Server 2008 R2,我需要将一些记录分发给各个组,但我希望尽量保持这些组的一致性。 我一直在考虑使用ntile,但我无法在不重做现有记录的情况下考虑现有项目 编辑: 举一个例子来更好地解释我需要什么: 我们有很多分配给工作组的任务,我们希望在工作组之间平均分配这些任务。对于ntile来说,这是一项简单的任务。。 但是,当不再需要这些任务时,它们将被删除,这使得组具有不同数量的任务。 当添加新任务时,我们仍然希望尝试保持这些组的平衡 例如现有群体: GroupName - Task Count Group1 - 10

我需要将一些记录分发给各个组,但我希望尽量保持这些组的一致性。 我一直在考虑使用ntile,但我无法在不重做现有记录的情况下考虑现有项目

编辑: 举一个例子来更好地解释我需要什么:

我们有很多分配给工作组的任务,我们希望在工作组之间平均分配这些任务。对于ntile来说,这是一项简单的任务。。 但是,当不再需要这些任务时,它们将被删除,这使得组具有不同数量的任务。 当添加新任务时,我们仍然希望尝试保持这些组的平衡

例如现有群体:

GroupName - Task Count
Group1 - 1000
Group2 - 999
Group3 - 998
如果我们增加6项新任务,他们将有更多的任务分配给第2组和第3组,因为他们的任务少于第1组

Task 1 - Group3
Task 2 - Group3
Task 3  -Group2
Task 4 - Group1
Task 5 - Group2
Task 6 - Group3
样本表

Create table GroupTable
(GroupID int, Name varchar(200) )
Insert into GroupTable values (1,'Group1')
Insert into GroupTable values (2,'Group2')
Insert into GroupTable values (3,'Group3')


Create table Jobs(jobid int identity(1,1), name varchar(100),Groupid int)
--Existing tasks
Insert into Jobs(name,Groupid) values ('Task1',1)
Insert into Jobs(name,Groupid) values ('Task2',1)
Insert into Jobs(name,Groupid) values ('Task3',1)
Insert into Jobs(name,Groupid) values ('Task4',1)
Insert into Jobs(name,Groupid) values ('Task5',2)
Insert into Jobs(name,Groupid) values ('Task6',2)
Insert into Jobs(name,Groupid) values ('Task6',2)
Insert into Jobs(name,Groupid) values ('Task7',3)

-- New tasks
Insert into Jobs(name) values ('TaskA')
Insert into Jobs(name) values ('TaskB')
Insert into Jobs(name) values ('TaskC')
Insert into Jobs(name) values ('TaskD')
Insert into Jobs(name) values ('TaskE')
Insert into Jobs(name) values ('TaskF')
这给了我们6个未分配的任务和一个不均匀的组分配

GROUPNAME   TASK_COUNT
<none>      6
Group1      4
Group2      3
Group3      2

为什么记录3进入第1组?它不会进入第二组,这样每个组都有1000个计数吗?真的很难猜测你想具体做什么。分配记录时发生的更改。您知道需要分配哪些记录。您尝试做的一个具体示例是helpful@Dave.Gugg-那是个打字错误sorry@GaryWalker-我添加了一个例子,希望能解释一切。
TaskA - Group3
TaskB - Group3
TaskC - Group2
TaskD - Group1
TaskE - Group2
TaskF - Group3