Я новичок в SQL, и я надеюсь, что мой пост будет ясным.
Итак, у меня есть 1 таблица (см. Рисунки) с моим SalesMen, связанным с контрактом.
И я хочу иметь возможность оценить каждого SalesMen по контракту.
Поэтому, если сегодня по контракту 001 у меня есть Мартин как единственный продавец, он должен иметь ранг «1».
Но если однажды Мартина уволят, а новым парнем станет Фрэнк. Тогда Мартин будет 2-го ранга, а Фрэнк - 1.
пример:
idContract idSalesMan DateLoad
001 Jean 1900-01-01
001 Jean 1900-02-02
001 Jean 1900-03-03
002 Martin 1900-01-01
002 Martin 1900-02-02
002 Frank 1900-03-03
Результат, который я хочу:
idContract idSalesMan DateLoad RankedSalesMan
001 Jean 1900-01-01 1
001 Jean 1900-02-02 1
001 Jean 1900-03-03 1
002 Martin 1900-01-01 2
002 Martin 1900-02-02 2
002 Frank 1900-03-03 1
Что я сделал:
1-я попытка:
select idContract,IdSalesMan,
Row_number() over (partition by IDContract , IDsALESmAN order by IDsALESmAN )
Но это дало мне обычный 1,2,3,4
Тогда я попробовал
select
x.*
,case when x.PrecedingSalesMan = x.SalesMan then
Row_number() over (partition by IDContract , IDsALESmAN order by IDsALESmAN )
from(
select idContract,IdSalesMan,
,LAG(CodeAgent,1) over (order by NoContract, idCustomers, kCode_Agent) as PrecedingSalesMan) x
Но это тоже не работает: (
Я не знаю, что делать