【发布时间】:2017-01-15 11:43:30
【问题描述】:
我想从给定的输入表中实现以下输出。
输入表(待填充的桶)
ID | FullCapacity | CurrentAmount
---+--------------+--------------
B1 | 100 | 0
B2 | 50 | 0
B3 | 70 | 0
输入表(填充表)
ID | Filler
---+-------
F1 | 90
F2 | 70
F3 | 40
F4 | 20
输出表应该有下面显示的填充过程。
ID | FullCapacity | CurrentAmount
---+--------------+--------------
B1 | 100 | 90
B2 | 50 | 0
B3 | 70 | 0
---+--------------+--------------
B1 | 100 | 100
B2 | 50 | 50
B3 | 70 | 10
---+--------------+--------------
B1 | 100 | 100
B2 | 50 | 50
B3 | 70 | 50
---+--------------+--------------
B1 | 100 | 100
B2 | 50 | 50
B3 | 70 | 70
我正在尝试从填充器到桶一个一个地填充这个。我们可以不使用光标来做到这一点吗?
请注意,我们可以有多种类型的桶,例如红色桶、蓝色桶和红色填充物、蓝色填充物。红色填充到红色桶,蓝色填充到蓝色等等。
谢谢
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
-
你可以使用递归 CTE 来做到这一点,但这有点傻。家庭作业的气味。无论如何,您都需要做一些工作,试一试并告诉我们为什么递归 CTE 不起作用。
-
我使用的是 SQL Server 2008。
标签: sql sql-server sql-server-2008 common-table-expression bucket