我有一桌集装箱
containerID | 能力 |
---|---|
1 | 2 |
2 | 5 |
3 | 10 |
和一张物品表
ItemID | 容器ID |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 |
我想要这个.第一个容器可以容纳2个记录,所以前2个记录放在容器1中,接下来的5个记录放在容器2中,下一个容器容纳10个记录,但还有5个记录,所以剩下的记录放在最后一个容器中.
ItemID | 容器ID |
---|---|
1 | 1 |
2 | 1 |
3 | 2 |
4 | 2 |
5 | 2 |
6 | 2 |
7 | 2 |
8 | 3 |
9 | 3 |
10 | 3 |
11 | 3 |
12 | 3 |
我已经简化了这个问题,但您可以假设可用的容器将容纳所有可用的项目.
我通常可以在这里找到一个解决方案,但我不知道如何用我的搜索来寻找一些东西.
我想我可以为项目表分配一个序列,如下所示
select
(Row_number()
OVER(
ORDER BY itemid) - 1 ) / 2 + 1 AS seq
然后用它来匹配我的容器,但这不是动态的,因为容器的容量不是静态的.