For completeness, the query is below:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(sessdate = ''',
sessdate,
''', statusid, NULL)) AS ',
DATE_FORMAT(FROM_UNIXTIME(sessdate), '`%d/%m/%y`')
)
) INTO @sql
FROM prefix_user
INNER JOIN prefix_user_info_data ON prefix_user.id = prefix_user_info_data.userid
INNER JOIN prefix_attendance_log ON prefix_user.id = prefix_attendance_log.studentid
INNER JOIN prefix_attendance_sessions ON prefix_attendance_log.sessionid = prefix_attendance_sessions.id
WHERE fieldid=4;
SET @sql = CONCAT('SELECT lastname, ', @sql, ' FROM prefix_user
INNER JOIN prefix_user_info_data ON prefix_user.id = prefix_user_info_data.userid
INNER JOIN prefix_attendance_log ON prefix_user.id = prefix_attendance_log.studentid
INNER JOIN prefix_attendance_sessions ON prefix_attendance_log.sessionid = prefix_attendance_sessions.id
WHERE fieldid=4
GROUP BY lastname');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;