SELECT a.demographic_no AS DemNo, dem.last_name AS 'Lastname', dem.first_name AS 'Firstname',
CONCAT_WS('-', year_of_birth, month_of_birth, date_of_birth ) AS 'DOB',
a.provider_no as 'ProvNo', prov.last_name,
MAX( a.appointment_date ) AS 'RecentAppt'
FROM appointment a
LEFT JOIN demographic dem on a.demographic_no = dem.demographic_no
LEFT JOIN provider prov on a.provider_no = prov.provider_no
WHERE a.provider_no = IF('{provider}'=' ALL', a.provider_no , '{provider}' )
AND a.demographic_no > 0
GROUP BY a.demographic_no
HAVING MAX( a.appointment_date ) < '{last_date}'
ORDER BY dem.last_name, dem.first_name ;
( select distinct provider_no, concat(last_name,',',first_name,'(',provider_no,')') as name
from provider where provider_type = 'doctor' and status = 1 )
UNION
( select ' ALL', 'All providers' )
order by provider_no ;