Sybase IQ 16 - Найти пользователей, которые изменили продукт - PullRequest
0 голосов
/ 31 марта 2020

Мои данные фиксируют историю покупок для категории товаров. Обычно участник будет покупать продукт X в течение нескольких месяцев, но меня интересуют те участники, которые перешли на продукт Y и когда это произошло.

Мои данные выглядят следующим образом:

Member Number   Date        Product                             TOT
    210539662   2019-05-26  PRODUCT A                           PREVENTATIVE
    210539662   2019-06-28  PRODUCT A                           PREVENTATIVE
    210539662   2019-07-30  PRODUCT A                           PREVENTATIVE
    210539662   2019-08-28  PRODUCT A                           PREVENTATIVE
    210539662   2019-09-24  PRODUCT A                           PREVENTATIVE
    210539662   2019-10-17  PRODUCT A                           PREVENTATIVE
    210539662   2019-11-19  PRODUCT B                           TREATMENT   
    210539662   2019-12-20  PRODUCT B                           TREATMENT

Я хотел бы получить список всех номеров участников и первой даты, когда они переключились с профилактических продуктов на продукты для лечения.

Обратите внимание, что я использую Sybase IQ, и я не верю, что его возможный запуск заказал сабвуфер. -queries.

1 Ответ

1 голос
/ 31 марта 2020

Я хотел бы вытащить список всех номеров участников и дату, с которой они перешли с профилактических средств на продукты для лечения.

Использование lag() и group by:

select member,
       min(case when prev_tot = 'PREVENTATIVE' and tot = 'TREATMENT'
                then date
           end) as first_prev_to_treat_date
from (select t.*,
             lag(tot) over (partition by member order by date) as prev_tot
      from t
     )  t
group by member;
...