/* https://stackoverflow.com/questions/15997090/crosstab-view-in-mysql */ SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'sum(CASE WHEN clName = ''', clName, ''' THEN score else ''-'' END) AS `', clName, '`' ) ) INTO @sql FROM clients; SET @sql = CONCAT('SELECT s.playdate, ', @sql, ' from clients c inner join scores s on c.clid = s.clid group by s.playdate'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;