La cabra :
Mis captura los datos de los miembros de la historia de compras de una categoría de productos. Normalmente un miembro va a comprar el producto X por un número de meses, pero estoy interesado en los miembros que mueven al producto Y y cuando eso sucedió.
Mis datos es el siguiente:
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
Me gustaría sacar una lista de todos los números de miembros y la primera fecha en que cambiaron de productos preventivos a los productos de tratamiento.
Tenga en cuenta que estoy utilizando Sybase IQ y no creo que su posible ejecución ordenó sub-consultas.
Gordon Linoff:
Me gustaría sacar una lista de todos los números de miembros y la primera fecha en que cambiaron de productos preventivos a los productos de tratamiento.
Utilizar lag()
y 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;