我有一个如下的 sql 场景,我一直在努力改进。
有一个“退货”表,其中包含针对某商品的商店退货商品的 ID。其结构如下。
Returns
-------------------------
Return ID | Shop | Item
-------------------------
1 Shop1 Item1
2 Shop1 Item1
3 Shop1 Item1
4 Shop1 Item1
5 Shop1 Item1
还有一个表 Supplier 与 Shop、supplier 和 Item 如下所示。
Supplier
---------------------------------
Supplier | Shop | Item | Volume
---------------------------------
supp1 Shop1 Item1 20%
supp2 Shop1 Item1 80%
现在如您所见,supp1 向 shop1 供应 20% 的 item1 总量,而 supp2 向 shop1 供应 80% 的 Item1。同一 Shop1 的同一 Item1 有 5 次退货。现在我需要将任意四个返回 ID 分配给 Supp1,将剩余的一个返回 ID 分配给 supp2。这种数量的分配是基于供应商的供应量百分比的比率。这种分配取决于供应物品的数量比例。
现在我尝试了一种使用临时表的方法,如下所示。
临时表 1 将包含商店、退货 ID、商品、退货 ID 总数和退货 ID 排名。
temp table 2 将有 shop、Supplier、Item 和他的比例和比例等级。
现在我面临着将顶级退货 ID 分配给顶级供应商的困难,如上图所示。由于 SQL 没有循环,我该如何实现这一点。我一直在尝试几种方法。
我的环境是 Teradata(ANSI SQL 就够了)。