从表中均匀分配行

时间:2013-08-06 20:21:58

标签: c# sql sql-server linq

我有两张桌子:

**Users**
UserID | UserName | Password

**Task**
TaskId | Hours | UserID (Empty as of now)

我需要在Tasks表中将UserID分配给任务,以便所有用户都可以获得几小时的任务。我在数据库中有大约5000个任务,Hours列值范围从1到30。

如何使用SQL Server查询或LINQ?

1 个答案:

答案 0 :(得分:2)

这听起来像分区问题(请参阅here),您尝试分配任务,以便每个用户的小时数相同。

在某些情况下,问题很容易解决(例如,如果所有任务的长度都是1小时)。在其他情况下,问题没有解决方案(例如,如果用户多于任务)。作为提示,当问题具有如此极端的变化时,可能无法通过使用SQL查询来解决。

当然,您可以表示表格中的数据。并且,您可以将光标用于具有复杂逻辑的某些查询,并调用此SQL。

维基百科页面描述了几种不同的可能算法。祝你好运。