我在 sql 中遇到问题,需要从事务列表生成装箱单。
数据模型
交易存储在包含以下内容的表中:
每个事务可以有多个项目(同时也可以有多个具有相同事务 ID 的行)。每个项目的数量从 1 到 N。
业务问题
业务要求我们创建一份装箱单,装箱单中的每一项都包含箱子中每件物品的数量。
每个盒子只能容纳 160 件物品(它们的尺寸/重量恰好相同)。根据订单的总数,我们需要将项目拆分到不同的盒子中(有时甚至将单个项目的集合拆分为两个盒子)
因此,挑战在于采用该数据模式并得出结果集,其中包括每个框中属于每个项目的数量。
我目前正在以一些不太漂亮的方式强制执行此操作,并想知道是否有人有一个我忽略的优雅/简单的解决方案。
输入/输出示例
我们确实需要隔离每个盒子中最终有多少个物品......例如:
订单 1:
- 100 个项目 A
- B 项 100
- 140 项目 C
This should result in three rows in the result set:
- 方框1:A(100),B(60)
- 方框2:B(40)、C(120)
- 方框3:C(20)
理想情况下,查询足够智能,可以将所有 C 放在一起,但此时 - 我们不太关心这一点。
怎么样
SELECT SUM([Item quantity]) as totalItems
, SUM([Item quantity]) / 160 as totalBoxes
, MOD(SUM([Item Quantity), 160) amountInLastBox
FROM [Transactions]
GROUP BY [Transaction Id]
让我知道您要查找结果集中的哪些字段,我可以提出更好的字段
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)