SQL能做百钱白鸡的吗

qq_37693160 2018-08-28 01:47:16
表如下
产品 仓库 箱数 每箱数量(个)
001 A 1 1
001 B 5 2
001 C 4 8

用户给出查询条件 001 ,6个 ;就是需要提货001产品6个;刚好B仓库提货3箱就可以了。返回B 3 2
如果查询条件是 001 ,15个;因为没有除尽的,算法是有包装方式由大到小 所以 返回 C 1 8 和B 3 2 和A 1 1 ,加起来刚好15个
另外每箱1个的包装方式,每种产品都是有的,但是不是每种产品都有2个每箱,8个每箱的情况。所以这个2,和8 是不固定。比如002产品 只有3个每箱 和1个每箱的情况。

另外每箱一个的可能是没有库存的,但是允许拆箱的情况。如上面001 的例子,假设A仓库是没有库存的,但是给出001,15个的条件,还是可以返回 C 1 8 和B 3 2 和A 1 1 的数据。可以假设每箱一个的情况永远有货(当其他包装方式有库存的情况)


最后如果给出条件 001 100 ;因为库存不够了,返回0行数据



...全文
208 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2018-08-28
  • 打赏
  • 举报
回复
不复杂吧,跟着逻辑走不就行了

先取每箱数量 <= 总数,并且每臬数量多大的那一个,用 总数/每箱数量 得到箱数,如果这个超过库存,取库存箱数做为最终结果,然后用总数-箱数*每箱数量 得到剩余总数

用剩余总数做为总数重复上面的步骤,直到总数为0,或者是没有可用数据

如果总数为0,返回所有数据,否则返回0行数据

11,849

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧