The Driver Masterfile has a lot of unneccessary fields, but the Expiries dashboards are very popular, hence the detailed query below.
SELECT DriverNumber,
DriverName,
TranspNo,
TranspDescrip,
DriverDormantFlag,
PDPDate ,
LicenseDate ,
MedicalExaminationDate,
Datediff(PDPDate,NOW()) AS PDP_ExpiryDays,
CASE WHEN PDP_ExpiryDays < 0 THEN "1. Expired" WHEN PDP_ExpiryDays
BETWEEN 0 AND 90 THEN "2. Expiry Upcoming"
ELSE "3. Valid" END AS PDP_ExpiryFlag,
CASE WHEN PDPDate < date(now()) THEN PDPDate
ELSE ''end AS PDP_Expired,
CASE WHEN PDPDate < date_add(date(now()),interval 7 day) AND PDPDate >= date(now()) THEN PDPDate
ELSE '' END AS PDP_7_Days,
CASE WHEN PDPDate < date_add(date(now()),interval 15 day) AND PDPDate >= date_add(date(now()),interval 7 day) THEN PDPDate
ELSE '' END AS PDP_7_To_15_Days,
CASE WHEN PDPDate < date_add(date(now()),interval 30 day) AND PDPDate >= date_add(date(now()),interval 15 day) THEN PDPDate
ELSE '' END AS PDP_15_To_30_Days,
CASE WHEN PDPDate < date_add(date(now()),interval 60 day) AND PDPDate >= date_add(date(now()),interval 30 day) THEN PDPDate
ELSE '' END AS PDP_30_To_60_Days,
CASE WHEN PDPDate < date_add(date(now()),interval 90 day) AND PDPDate >= date_add(date(now()),interval 60 day) THEN PDPDate
ELSE '' END AS PDP_60_To_90_Days,
CASE WHEN PDPDate >= date_add(date(now()),interval 90 day) THEN PDPDate
ELSE '' END AS PDP_90_Plus_Days,
CASE WHEN PDPDate < date(now()) THEN 1
ELSE 0 END AS PDP_Expired_Count,
CASE WHEN PDPDate < date_add(date(now()),interval 7 day) AND PDPDate >= date(now()) THEN 1
ELSE 0 END AS PDP_7_Days_Count,
CASE WHEN PDPDate < date_add(date(now()),interval 15 day) AND PDPDate >= date_add(date(now()),interval 7 day) THEN 1
ELSE 0 END AS PDP_7_To_15_Days_Count,
CASE WHEN PDPDate < date_add(date(now()),interval 30 day) AND PDPDate >= date_add(date(now()),interval 15 day) THEN 1
ELSE 0 END AS PDP_15_To_30_Days_Count,
CASE WHEN PDPDate < date_add(date(now()),interval 60 day) AND PDPDate >= date_add(date(now()),interval 30 day) THEN 1
ELSE 0 END AS PDP_30_To_60_Days_Count,
CASE WHEN PDPDate < date_add(date(now()),interval 90 day) AND PDPDate >= date_add(date(now()),interval 60 day) THEN 1
ELSE 0 END AS PDP_60_To_90_Days_Count,
CASE WHEN PDPDate >= date_add(date(now()),interval 90 day) THEN 1
ELSE 0 END AS PDP_90_Plus_Days_Count,
Datediff(LicenseDate,NOW()) AS License_ExpiryDays,
CASE WHEN License_ExpiryDays < 0 THEN "1. Expired" WHEN License_ExpiryDays
BETWEEN 0 AND 90 THEN "2. Expiry Upcoming"
ELSE "3. Valid" END AS License_ExpiryFlag,
CASE WHEN LicenseDate < date(now()) THEN LicenseDate
ELSE ''end AS License_Expired,
CASE WHEN LicenseDate < date_add(date(now()),interval 7 day) AND LicenseDate >= date(now()) THEN LicenseDate
ELSE '' END AS License_7_Days,
CASE WHEN LicenseDate < date_add(date(now()),interval 15 day) AND LicenseDate >= date_add(date(now()),interval 7 day) THEN LicenseDate
ELSE '' END AS License_7_To_15_Days,
CASE WHEN LicenseDate < date_add(date(now()),interval 30 day) AND LicenseDate >= date_add(date(now()),interval 15 day) THEN LicenseDate
ELSE '' END AS License_15_To_30_Days,
CASE WHEN LicenseDate < date_add(date(now()),interval 60 day) AND LicenseDate >= date_add(date(now()),interval 30 day) THEN LicenseDate
ELSE '' END AS License_30_To_60_Days,
CASE WHEN LicenseDate < date_add(date(now()),interval 90 day) AND LicenseDate >= date_add(date(now()),interval 60 day) THEN LicenseDate
ELSE '' END AS License_60_To_90_Days,
CASE WHEN LicenseDate >= date_add(date(now()),interval 90 day) THEN LicenseDate
ELSE '' END AS License_90_Plus_Days,
CASE WHEN LicenseDate < date(now()) THEN 1
ELSE 0 END AS License_Expired_Count,
CASE WHEN LicenseDate < date_add(date(now()),interval 7 day) AND LicenseDate >= date(now()) THEN 1
ELSE 0 END AS License_7_Days_Count,
CASE WHEN LicenseDate < date_add(date(now()),interval 15 day) AND LicenseDate >= date_add(date(now()),interval 7 day) THEN 1
ELSE 0 END AS License_7_To_15_Days_Count,
CASE WHEN LicenseDate < date_add(date(now()),interval 30 day) AND LicenseDate >= date_add(date(now()),interval 15 day) THEN 1
ELSE 0 END AS License_15_To_30_Days_Count,
CASE WHEN LicenseDate < date_add(date(now()),interval 60 day) AND LicenseDate >= date_add(date(now()),interval 30 day) THEN 1
ELSE 0 END AS License_30_To_60_Days_Count,
CASE WHEN LicenseDate < date_add(date(now()),interval 90 day) AND LicenseDate >= date_add(date(now()),interval 60 day) THEN 1
ELSE 0 END AS License_60_To_90_Days_Count,
CASE WHEN LicenseDate >= date_add(date(now()),interval 90 day) THEN 1
ELSE 0 END AS License_90_Plus_Days_Count,
Datediff(MedicalExaminationDate,NOW()) AS MedicalExamination_ExpiryDays,
CASE WHEN MedicalExamination_ExpiryDays < 0
OR NULL
OR '' THEN "1. Expired" WHEN MedicalExamination_ExpiryDays
BETWEEN 0 AND 90 THEN "2. Expiry Upcoming"
ELSE "3. Valid" END AS MedicalExamination_ExpiryFlag,
CASE WHEN MedicalExaminationDate < date(now()) THEN MedicalExaminationDate
ELSE ''end AS Medical_Expired,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 7 day) AND MedicalExaminationDate >= date(now()) THEN MedicalExaminationDate
ELSE '' END AS Medical_7_Days,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 15 day) AND MedicalExaminationDate >= date_add(date(now()),interval 7 day) THEN MedicalExaminationDate
ELSE '' END AS Medical_7_To_15_Days,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 30 day) AND MedicalExaminationDate >= date_add(date(now()),interval 15 day) THEN MedicalExaminationDate
ELSE '' END AS Medical_15_To_30_Days,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 60 day) AND MedicalExaminationDate >= date_add(date(now()),interval 30 day) THEN MedicalExaminationDate
ELSE '' END AS Medical_30_To_60_Days,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 90 day) AND MedicalExaminationDate >= date_add(date(now()),interval 60 day) THEN MedicalExaminationDate
ELSE '' END AS Medical_60_To_90_Days,
CASE WHEN MedicalExaminationDate >= date_add(date(now()),interval 90 day) THEN MedicalExaminationDate
ELSE '' END AS Medical_90_Plus_Days,
CASE WHEN MedicalExaminationDate < date(now()) THEN 1
ELSE 0 END AS MedicalExamination_Expired_Count,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 7 day) AND MedicalExaminationDate >= date(now()) THEN 1
ELSE 0 END AS Medical_7_Days_Count,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 15 day) AND MedicalExaminationDate >= date_add(date(now()),interval 7 day) THEN 1
ELSE 0 END AS Medical_7_To_15_Days_Count,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 30 day) AND MedicalExaminationDate >= date_add(date(now()),interval 15 day) THEN 1
ELSE 0 END AS Medical_15_To_30_Days_Count,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 60 day) AND MedicalExaminationDate >= date_add(date(now()),interval 30 day) THEN 1
ELSE 0 END AS Medical_30_To_60_Days_Count,
CASE WHEN MedicalExaminationDate < date_add(date(now()),interval 90 day) AND MedicalExaminationDate >= date_add(date(now()),interval 60 day) THEN 1
ELSE 0 END AS Medical_60_To_90_Days_Count,
CASE WHEN MedicalExaminationDate >= date_add(date(now()),interval 90 day) THEN 1
ELSE 0 END AS Medical_90_Plus_Days_Count
FROM vwa_drivermaster