我们正在使用Oracle 11。 我们有一个表DateRanges,它通过执行以下查询为我们提供了上一个工作日:
SELECT START_DATE FROM DateRanges WHERE ID = 14
-> START_DATE是上一个工作日(在上面的示例中,START_DATE = 1/24/19
我们有一个带有日期列(LIQ.UPD_DT)的表,我们需要在表LIQ和SEC查询之间进行LEFT JOIN,其中LIQ.UPD_DT>前两个工作日。
例如: 今天是19/1/25。
前2个工作日是19/1/23。
我们如何执行此查询? (我需要将(+)=用作LEFT JOIN,因为我向该查询提供信息的应用程序没有使用LEFT JOIN语法):
WHERE LIQ.ID (+)= SEC.ID AND LIQ.UPD_DT (+) >= '{2 previous business day}'
谢谢。
答案 0 :(得分:0)
要添加到我之前发布的内容中,您需要调整工作日,具体取决于您的商店。一些商店维护着带有假期的商店日历表,等等。但是一种方法是使用如下代码跳过星期六和星期日。 -- 选择trunc(sysdate)-r from(通过rownum <= 8从双连接中选择rownum r) 其中to_char(trunc(sysdate)-r,'D')不在('1','7')中 /
19年1月24日 19年1月23日 19年1月22日 19年1月21日 19年1月18日 19年1月17日
已选择6行。 -请注意不在清单中的第19位和第20位,这样的计算将取代上面2天的硬编码。