USE caris_db; SET @start_date="2019-04-01"; SET @end_date="2019-06-30"; SELECT a.patient_code, dob, IF(TIMESTAMPDIFF(YEAR, dob, @start_date) >= 25, '25+', IF(TIMESTAMPDIFF(YEAR, dob, @start_date) < 25 AND TIMESTAMPDIFF(YEAR, dob, @start_date) >= 18, '18-24', IF(TIMESTAMPDIFF(YEAR, dob, @start_date) < 18 AND TIMESTAMPDIFF(YEAR, dob, @start_date) >= 15, '15 17', IF(TIMESTAMPDIFF(YEAR, dob, @start_date) < 15 AND TIMESTAMPDIFF(YEAR, dob, @start_date) >= 10, '10 15', IF(TIMESTAMPDIFF(YEAR, dob, @start_date) < 10 AND TIMESTAMPDIFF(YEAR, dob, @start_date) >= 1, '1 9', ''))))) AS tranche FROM (SELECT DISTINCT patient_code FROM (SELECT patient_code FROM tracking_motherbasicinfo LEFT JOIN patient ON patient.id = tracking_motherbasicinfo.id_patient LEFT JOIN (SELECT DISTINCT id_patient FROM tracking_regime WHERE category = 'regime_mother_treatment' AND (start_date BETWEEN @start_date AND @end_date OR end_date BETWEEN @start_date AND @end_date)) z ON z.id_patient = tracking_motherbasicinfo.id_patient LEFT JOIN (SELECT id_patient FROM questionnaire_motherhivknowledge WHERE date BETWEEN @start_date AND @end_date UNION SELECT id_patient FROM questionnaire_newmotherhivknowledge WHERE date BETWEEN @start_date AND @end_date UNION SELECT id_patient FROM questionnaire_mothersurvey WHERE date BETWEEN @start_date AND @end_date) x ON x.id_patient = tracking_motherbasicinfo.id_patient LEFT JOIN (SELECT DISTINCT #club_patient.id_patient session.id_patient FROM #club_patient session LEFT JOIN club_session ON club_session.id=session.id_club_session #club_session.id_club = club_patient.id_club #LEFT JOIN session ON session.id_club_session = club_session.id WHERE is_present = 1 AND club_session.date BETWEEN @start_date AND @end_date) y ON y.id_patient = tracking_motherbasicinfo.id_patient LEFT JOIN tracking_pregnancy ON tracking_pregnancy.id_patient_mother = tracking_motherbasicinfo.id_patient WHERE patient.id IS NOT NULL AND (x.id_patient IS NOT NULL OR PTME_date BETWEEN @start_date AND @end_date OR tracking_pregnancy.actual_delivery_date BETWEEN @start_date AND @end_date OR y.id_patient IS NOT NULL OR z.id_patient IS NOT NULL)) c UNION SELECT DISTINCT health_id AS patient_code FROM openfn.odk_pregnancy_visit WHERE date_of_visit BETWEEN @start_date AND @end_date) a LEFT JOIN patient ON patient.patient_code = a.patient_code LEFT JOIN tracking_motherbasicinfo ON tracking_motherbasicinfo.id_patient = patient.id
Comments