我正在处理货件交付报告以确定货件是否在装运窗口内进行。选择未来的日期
每个版本都有一个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)看起来不太合适。 –