2013-01-02 361 views
0

我有一個表StockManagement它看起來像這樣我想一個正確的邏輯股票同治

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

現在讓我們假設我有產品A的10數量作爲我的表顯示我有5期產品A從1 JAn到1月3日和另外5從1月1日到1月4日。現在我的客戶想要預訂產品A從1月4日到1月7日。正如你可以在表中看到5產品A將於1月3日返回,所以我可以問題5月1日發佈5款產品。這是我想通過查詢完成的。

所以,請幫助我獲得兩個日期之間的可用數量。

回答

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

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

select sum(Qty) AvailableQty 
from StockManagement 
where 
    [email protected] AND 
    @BkDate not between DateOfBooking and DateOfReturning 
having sum(Qty)>[email protected] 
+0

可能需要閱讀亞倫伯特蘭對之間的文章[什麼BETWEEN和魔鬼有什麼共同點?(http://sqlblog.com /blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx) –