mysql 返回所有行_mysql-SQL返回剩余的行

我有一个现有数量表,其中列出了零件清单.我还有第二张表,其中包含一系列订购发货日期和所需数量.

我想返回下一个订单的发货日期,而该订单将不再可用.

例如:

表1,A,B和C部分的现有数量:

Name Qty-Have

A 10

B 10

C 5

表2,A,B和C部分的未来两个月的未来订单:

Name Due Qty-Need

A 11/10/17 4

A 11/15/17 6

A 11/20/17 3

A 11/25/17 10

B 11/12/17 4

B 12/15/17 4

B 12/29/17 4

C 11/10/17 7

结果,我们将在库存不足时的最早订购日期:

Name Next Due Qty-Want

A 11/20/17 13

B 12/29/17 2

C 11/10/17 2

我知道我可以对表2进行分组,并减去库存以获得数量,但是我不知道如何获取下一个未发现订单的下一个发货日期.

A部分的前两个订单我们都有库存,我想知道我们的第三个订单(11/20/17)还不够,我们应该制造13个零件以满足所有剩余需求.

解决方法:

如果您有可用的窗口函数(SQL Server或MySQL 8及更高版本),请使用以下查询:

select h.name Name, min(o.due) Next_Due, max(o.sumQty) - h.Qtyhave Qty_Want

from

(

select *, sum(QtyNeed) over (partition by name order by due) sumQty

from orders

) o

right join onHand h on o.name = h.name and o.sumQty > h.Qtyhave

group by h.name, h.Qtyhave

demo-适用于SQL Server以及MySQL 8及更高版本

结果

Name Next Due Qty-Want

----------------------------------

A 11/20/17 13

B 12/29/17 2

C 11/10/17 2

标签:sql,mysql,sql-server

来源: https://codeday.me/bug/20191110/2014992.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值