我正在處理貨件交付報告以確定貨件是否在裝運窗口內進行。選擇未來的日期
每個版本都有一個Ship_Date值,該值是發佈版必須發佈的日期。有些版本雖然具有較晚的窗口整數值,說明如果裝運是在X天內完成的,那麼它仍然是按時考慮的。
這是複雜的另一個表,其中包含有效月份(用於排除假期,週末等)的有效發貨日。
Order_Releases_Table
Part_No,
Quantity,
Ship_Date,
Window
Shipping_Date
Shipping_Day
樣本數據
Order_Releases_Table
Part_No Quantity Ship_Date Window
ABC 100 9/1/2011 0
XYZ 200 9/1/2011 2
Shipping_Date
9/1/2011
9/2/2011
9/5/2011
所以用這個數據部分ABC有出貨的9/1要在時間考慮。雖然XYZ部分可以在9/1之前發貨2天,但仍然可以按時發貨,但由於9/3不在我們的發貨日期,因此9/5是發貨的最後一天,仍然可以按時發貨。
我認爲答案在於加入運輸天表的子查詢,該表查詢將行號分配給shipping_day字段。
SELECT
Row_Number() OVER(ORDER BY Shipping_Date) AS Day_No,
Shipping_day
FROM Shipping_Date
WHERE Shipping_Day > Ship_Date
RETURNS
Day_No Shipping_Day
1 9/2/2011
2 9/5/2011
然後,如果我只是拿起本子查詢Day_No等於從釋放窗口值的日期,然後我有最後一天特定的貨物可以出貨,但仍然可以在時間考慮。
雖然我很難將它全部包裝到最終查詢中。
這是解決問題的正確方法嗎?
你想要什麼最終報告的樣子? – JNK
使用發佈表ABC,100,9/1/2011和XYZ,200,9/5/2011中的2個示例條目。基本上它需要動態地重新調整每個版本,因爲每個版本都可以有一個獨立的窗口。我將用這個日期來反駁我的託運人表,以確定託運人是否實際上按時發貨。 –
這是否會在SQL中有點棘手。像這樣的東西我可能會喜歡在代碼中做,因爲基於集合的邏輯(即SQL)看起來不太合適。 –