我正在为库存管理尝试一个合适的逻辑

时间:2013-01-02 07:00:31

标签: sql

我有一个表StockManagement看起来像这样

PId          Qty             Dateof Booking           DateOfReturning
1              5               1 Jan 2013               3 Jan 2013
1              5               1 Jan 2013               4 Jan 2012

现在让我们假设我有10个产品A.我的表显示我从1月1日到1月3日发行了第5期产品A而从1月1日到1月4日又有5个产品。现在我的客户想要从4开始预订产品A. 1月1日至7月7日。正如您在表格中看到的那样,5产品A将于1月3日返回,因此我可以从1月4日开始发行5件产品。这是我想通过查询做的。

所以请帮助我获取两个日期之间的可用数量。

2 个答案:

答案 0 :(得分:0)

select count(s1.qty) from StockManagement s1 inner join
StockManagement s2 on s1.PId=s2.PId
where to_date(s1.DateofBooking,'dd/mm/yyyy') not 
between to_date(s2.DateofBooking,'dd/mm/yyyy') and 
to_date(s2.DateOfReturning,'dd/mm/yyyy')

试试这个。同时我会试着给你发一个现场演示

SQL_LIVE_DEMO

答案 1 :(得分:0)

declare @BkDate datetime, @qty int, @Pid int
select @BkDate='04-Jan-2013', @qty=5, @Pid=1

select sum(Qty) AvailableQty 
from StockManagement 
where 
  Id=@Pid AND 
  @BkDate not between DateOfBooking and DateOfReturning
having sum(Qty)>=@qty