Try
SELECT resource_id, MAX(CASE WHEN inventory_id = 1 THEN `count` ELSE NULL END) AS 'Resource 1', MAX(CASE WHEN inventory_id = 2 THEN `count` ELSE NULL END) AS 'Resource 2' FROM table1 GROUP BY resource_id
Strike>
but if you have an unknown inventory_id value is not easy ( 1 and 2 ), it is better to use PreparedStatement
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(CASE WHEN inventory_id = ', inventory_id, ' THEN `count` ELSE NULL END) AS ''RESOURCE ', inventory_id, '''' ) ) INTO @sql FROM table1; SET @sql = CONCAT('SELECT resource_id, ', @sql, ' FROM table1 GROUP BY resource_id'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
source share