SELECT tblPupil.fldPplForename, tblPupil.fldPplSurname, Avg((IIf([fldPunctuality]=-1,1,0))+(IIf([fldOnTask]=-1,1,0))+(IIf([fldRespect]=-1,1,0))+(IIf([fldBehaviour]=-1,1,0))) AS fldTotalPoints, jtblPointLog.fldDate, (IIf([fldTotalPoints]<1.5,"No Award",IIf([fldTotalPoints]<2.5,"Bronze",IIf([fldTotalPoints]<3.2,"Silver","Gold")))) AS fldAward
FROM qryRecentDate, tblAwardLog INNER JOIN (tblPupil INNER JOIN jtblPointLog ON tblPupil.fldPplID = jtblPointLog.[fldPPplID]) ON (tblPupil.fldPplID = tblAwardLog.fldAPplID) AND (tblAwardLog.fldAPplID = tblPupil.fldPplID)
GROUP BY tblPupil.fldPplForename, tblPupil.fldPplSurname, jtblPointLog.fldDate, qryRecentDate.MaxOffldDateAwarded, (IIf([fldTotalPoints]<1.5,"No Award",IIf([fldTotalPoints]<2.5,"Bronze",IIf([fldTotalPoints]<3.2,"Silver","Gold"))))
HAVING (((jtblPointLog.fldDate)>[MaxOffldDateAwarded]))
ORDER BY tblPupil.fldPplSurname;