对不同的日期范围应用不同的调整因子

Apply different Adjustment Factor for different date range

我有一个 Table 与不同日期的销售人员和销售人员。我有另一个 table,我有销售人员和多个日期范围,需要应用不同的调整因子。

当调整因子 table 中的人只有一行或没有行时,我可以使用 case 语句来执行此操作。但是我不确定如何为同一个销售人员遍历不同的日期范围

    select a.date, a.salesperson, a.sales, b.adjustmentfactor, 
    case when a.date between b.startdate and b.enddate then b.adjustmentfactor 
    else 1 end realadjfactor,
    a.sales * case when a.date between b.startdate and b.enddate then 
    b.adjustmentfactor else 1 end realsales
    from sales a left join adjfactor b on a.salesperson = b.salesperson

你只想要一个 join 吗?

select s.date, s.salesperson, s.sales, 
       coalesce(af.realadjfactor, 1) * s.sales as adjustedsales,
       coalesce(af.realadjfactor, 1) as adjfactor
from sales s left join
     adjfactor af
     on s.salesperson = af.salesperson and
        s.date between af.startdate and af.enddate;