sql >> Base de Datos >  >> RDS >> Mysql

MySQL SELECCIONA MIN para siempre, pero solo regresa si ENTRE fechas

Si hacemos un mínimo de todas las transacciones por cliente, luego verifiquemos si está en el período correcto, obtenemos algo como...

Esto simplemente le dará un indicador de sí/no sobre si la primera compra del cliente se realizó dentro del período...

SELECT CASE COUNT(*) WHEN 0 THEN 'Yes' ELSE 'No' END As [WasFirstTransInThisPeriod?]
FROM (  
        SELECT bb_member.member_id As [member_id], MIN(bb_transactions.trans_tran_date) AS temp_first_time 
        FROM bb_business      
        RIGHT JOIN bb_transactions ON bb_transactions.trans_store_id = bb_business.store_id 
        LEFT JOIN bb_member ON bb_member.member_id = bb_transactions.trans_member_id 
        WHERE bb_business.id = '5651' 
        GROUP BY bb_member.member_id
    ) T
WHERE T.temp_first_time BETWEEN '2010-08-01' AND '2010-09-13'
ORDER BY T.member_id DESC

(esto está en T-SQL, pero con suerte debería dar una idea de cómo se puede lograr esto de manera similar en mySQL)

Simón