Применить разные поправочные коэффициенты для разных диапазонов дат - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть таблица с SalesPerson и Sales на разные даты.У меня есть другая таблица, где у меня есть SalesPerson и несколько диапазонов дат, где необходимо применять разные поправочные коэффициенты.

Я могу сделать это с помощью оператора 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

data and expected result

1 Ответ

2 голосов
/ 19 сентября 2019

Вы просто хотите 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;
...