Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL SELECT MIN für alle Zeiten, aber nur zurückgeben, wenn ZWISCHEN Daten

Wenn wir mindestens alle Transaktionen pro Kunde durchführen, überprüfen Sie, ob dies im richtigen Zeitraum ist, wir erhalten etwas in der Art von ...

Dadurch erhalten Sie einfach ein Ja/Nein-Flag, ob der erste Kauf des Kunden innerhalb des Zeitraums war...

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

(Dies ist in T-SQL, sollte aber hoffentlich eine Vorstellung davon geben, wie dies in ähnlicher Weise in mySQL erreicht werden kann)

Simon