我正在尝试根据[Date_Pulled]列之前的工作日来合并数据。例如,我要在星期一[Date_Pulled]提取星期五[date]数据,并在星期二[dates]我要提取星期一的[Date_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])))
类似这样的东西:
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)
注意,这里假定工作日名称为英语国际化设置。
您可以使用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 then -3 else -1 end, a.date_pulled)
注意:假设DATEFIRST
设置为7,星期日。调整以适合您的系统。