【发布时间】:2020-06-01 23:52:36
【问题描述】:
我有一个包含以下测试数据的表格:
我现在想用 12 个座位来填满一家餐厅。
这应该会导致:
基本上,我需要从上到下循环遍历所有行并添加 AmountPersons 直到我填满了餐厅。
在这个例子中:
(前几行:AmountPersons)3+1+2+4 = 10
UserId 52 无法添加,因为他们为 3 人保留,这将导致 13 个被占用的位置,只有 12 个可用。
在下一行它注意到 1 的预订。这可以添加到我们已经找到的前 10 个。
NewTotal 现在是 11。
无法添加用户 ID 79 和 82,因为我们会再次超出容量。
UserId 95 为 1 保留,可以添加这个,现在我们已经填满了所有位置。
这是我从我使用的光标得到的结果,但我现在卡住了。请帮忙。
当下一个值高于 12 时,我在光标中的 while 循环基本上会停止。但这是不正确的。
【问题讨论】:
-
请用您正在使用的数据库标记您的问题:mysql、oracle、postgresql...?
-
@GMB:标题不是说t-sql
-
@Dieter 。 . .标题不是标签。
-
也许我有点头脑简单,但我会在处理每一行时填充一个临时表,跳过会导致总和 > 12 的行,并在总和时终止循环临时表中的行等于 12。然后我有一个引用(临时表),用于更新或删除源表中的行(例如,将“坐下”列更新为 TRUE)。我发现简单的方法可以更好地执行,并且更易于维护。
-
以及如何确定行的顺序?你不应该先收集所有有 1s 的用户,然后是 2s 等,直到达到限制?不清楚的任务...
标签: sql-server tsql