помогите написать оконную функцию
Есть сущность id_d, которая может быть привязана к сущности id_r или к сущности id_s или может и туда и туда одновременно. Нужно написать оконную ф-цию, которая допускала бы дубликаты, привязанные id_d к id_s, но не допускала бы одновременную привязку. Что должно получиться в итоге:
Я написал двухэтажный CTE, но мне не нравится такое решение, может подскажете решение красивее? Спасибо
with cte as ( select id_d
, id_r
, id_s
, source
, ROW_NUMBER() over (partition by id_d,source order by id_s) as row_number1
,ROW_NUMBER() over (partition by id_d order by id_s) as row_number2
from [d_to_r]
select *
, (case when row_number1 >1 and row_number2>1 and row_number1 = row_number2 then 1
when row_number1 <> ROW_NUMBER2 and ROW_NUMBER2> row_number1 then row_number2
else 1
end) as row_number3
from cte

