SELECT ; CTime ; , MAX(IIF(DateW=1,Patient,SPACE(30))) AS Sunday ; , MAX(IIF(DateW=2,Patient,SPACE(30))) AS Monday ; , MAX(IIF(DateW=3,Patient,SPACE(30))) AS Tuesday ; , MAX(IIF(DateW=4,Patient,SPACE(30))) AS Wednesday ; , MAX(IIF(DateW=5,Patient,SPACE(30))) AS Thursday ; , MAX(IIF(DateW=6,Patient,SPACE(30))) AS Friday ; , MAX(IIF(DateW=7,Patient,SPACE(30))) AS Saturday ; FROM (SELECT MAX(T.CTime) CTime ; , MAX(DOW(T.CDate)) DateW ; , MAX(T.Patient) Patient ; , COUNT(*) rowInGroup; FROM theTable T ; LEFT JOIN theTable RN ; ON RN.OperationID <= T.OperationID ; AND RN.CTime=T.CTime ; AND DOW(RN.CDate)=DOW(T.CDate); GROUP BY T.OperationID) GG; GROUP BY CTime,rowInGroupif it is slow, a variation exists