USE caris_db; SET @start_date="2018-10-01"; SET @end_date="2019-03-31"; SELECT first.*, IF(tf1.id_patient IS NOT NULL, 'yes', 'no') AS viral_load, viral_load_count, viral_load_indetectable, if(viral_load_indetectable=1,'<1000 copies',if(viral_load_count<1000,'<1000 copies', if(viral_load_count>1000,'>1000 copies',''))) as viral_load_result ,viral_load_date, timestampdiff(year, dob, viral_load_date) as viral_load_age FROM (SELECT DISTINCT ti.id_patient, patient_code, IF(club.id_patient IS NOT NULL, 'yes', 'non') AS club, dob FROM tracking_infant ti LEFT JOIN tracking_followup tf ON tf.id_patient = ti.id_patient LEFT JOIN (SELECT * FROM (SELECT patient.id AS id_patient, date_of_visit FROM openfn.odk_child_visit odk1 LEFT JOIN patient ON patient.patient_code = odk1.patient_code WHERE date_of_visit BETWEEN @start_date AND @end_date)x) odk ON odk.id_patient = ti.id_patient LEFT JOIN (SELECT DISTINCT id_patient FROM session LEFT JOIN club_session ON club_session.id = session.id_club_session WHERE date BETWEEN @start_date AND @end_date AND is_present = 1) club ON club.id_patient = ti.id_patient LEFT JOIN patient ON patient.id = ti.id_patient WHERE (date BETWEEN @start_date AND @end_date or date_of_visit BETWEEN @start_date AND @end_date) AND linked_to_id_patient = 0) first LEFT JOIN (SELECT DISTINCT id_patient, viral_load_count, viral_load_indetectable, viral_load_date FROM tracking_followup tff WHERE took_viral_load_test = 1 AND date BETWEEN @start_date AND @end_date AND viral_load_date = (SELECT MAX(viral_load_date) FROM tracking_followup tfff WHERE tff.id_patient = tfff.id_patient AND date BETWEEN @start_date AND @end_date)) tf1 ON tf1.id_patient = first.id_patient group by first.id_patient