加入前一个工作日跳过周末

b4lqfgs4  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(392)

我正在尝试加入基于[date\u pulled]列之前的工作日的数据。例如,在星期一[date\u pulled]我想提取星期五[date]的数据,星期二[date]我想提取星期一的[date\u pulled]数据。
我这样做是为了避免空值,因为我们不在周末生成利率。
以下是我尝试过的:

select a.lane, a.them, b.us a.date_pulled, b.date
from table a
left join table2 b on a.lane = b.lane    
    AND A.[DATE_PULLED] = COALESCE(DATEADD(DAY,+1,B.[DATE]),(DATEADD(DAY,+3,B.[DATE])))

j2cgzkjk

j2cgzkjk1#

像这样:

from a join
     b
     on (b.date = dateadd(day, -1, a.date) and datename(weekday, a.date) <> 'Monday') or
        (b.date = dateadd(day, -3, a.date) and datename(weekday, a.date) = 'Monday')

请注意,这假定工作日名称为英语国际化设置。

koaltpgm

koaltpgm2#

你可以使用 case 用表达式计算出要看多少天。

select a.lane, a.them, b.us a.date_pulled, b.[date]
from a
inner join b on a.lane = b.lane
    and b.[date] = dateadd(day, case when datepart(weekday, a.date_pulled) = 2 /*Monday*/ then -3 else -1 end, a.date_pulled)

注:假设 DATEFIRST 设置为7,星期天。调整以适应您的系统。

相关问题