Найдите клиентов, которые поменяли место получения медицинской помощи с помощью SQL

Я хочу определить тех клиентов, которые САМЫЕ ПОСЛЕДНИЕ сменили место получения медицинской помощи в течение двухлетнего периода. Я хочу найти две последние транзакции для каждого клиента за двухлетний период, в которых диагностический код один и тот же, но сайт обслуживания отличается.

Например, участник 1 посещал и кабинет своего врача, и амбулаторное учреждение много раз за двухлетний период, но меня интересуют только последние две транзакции, когда он сменил место обслуживания для одного и того же кода диагноза.

Например, мои данные структурированы следующим образом:

MEMBER_ID DIAGNOSIS_CD  DATE        SITE_OF_SERVICE
1         A             April       Physician
1         A             May         Physician
2         A             May         Home Infusion
1         B             May         Physician
1         A             July        Outpatient
1         A             August      Physician
1         A             September   Physician
1         A             October     Outpatient

Любая помощь в решении этого будет принята с благодарностью.

Я использую Sybase IQ.


person TheGoat    schedule 30.11.2019    source источник
comment
Какие СУБД вы используете?   -  person Max♦    schedule 01.12.2019
comment
group by MEMBER_ID, DIAGNOSIS_CD обычно ведет вас в правильном направлении. Тип оконных функций, доступных вам, зависит от вашей СУБД.   -  person Max♦    schedule 01.12.2019
comment
Не могли бы вы показать нам ожидаемый результат?   -  person D-Shih    schedule 01.12.2019


Ответы (1)


Вы можете использовать:

select
  member_id
from (
  select
    *,
    row_number() 
      over (partition by member_id, diagnosis_cd order by date desc) as rn
  from t
) x
where rn <= 2
group by member_id
having min(site_of_service) <> max(site_of_service)
person The Impaler    schedule 01.12.2019