2015-01-07 53 views
-1
select orderdate, shipdate, ordernum 
from dbo.orders 

另一個表已經排除假期在計算網絡天

select date, workingday 
from a.workdays 

表工作日已workingday字段定義爲Y,N,其中定義週末和節假日N.

我想計算orderdateshipdate之間的差值,以挑出任何ordernum,天差大於5.我如何將它們連接在一起以供參考。我在網上進行了研究,很多pp使用變量,不幸的是我對此不太瞭解。

我成功排除了週末,但不知道如何處理假期。

DATEDIFF(dd, shipdate, orderdate + 1) - DATEDIFF(wk, orderdate, shipdate) * 2 - (CASE WHEN datename(dw, orderdate) = 'sunday' THEN 1 ELSE 0 END) - (CASE WHEN datename(dw, shipdate) = 'saturday' THEN 1 ELSE 0 END) AS DaysDifference 

感謝

+0

當你問未來出現的問題請格式化你的代碼。 –

回答

1

我會傾向於這種使用連接和聚合函數來解決:

select o.ordernum 
from dbo.orders o 
    join a.workdays w 
    on a.workdays >= o.orderdate and a.workdays <= o.shipdate 
where workingday = 'Y' 
group by o.ordernum 
having count(*) > 5 
+0

謝謝,但a.workdays> = o.orderdate和a.workdays <= o.orderdate?背後的原因是什麼? – user3597281

+0

@ user3597281:這是一個複製/粘貼錯誤。現在已經糾正了。 – Allan

+0

感謝艾倫,但我不認爲我們可以加入一個表(a.workdays)與變量(o.orderdate) – user3597281