Você precisa executar um
PIVOT
operação, que não é suportada nativamente no MySQL (diferente de alguns outros RDBMS). O mais próximo que você pode obter é construir SQL ao longo das seguintes linhas:
SELECT ProductId,
GROUP_CONCAT(IF(Name='Brand Name' ,value,NULL))
AS `Brand Name`,
GROUP_CONCAT(IF(Name='Ethernet Technology' ,value,NULL))
AS `Ethernet Technology`,
GROUP_CONCAT(IF(Name='Form Factor' ,value,NULL))
AS `Form Factor`,
GROUP_CONCAT(IF(Name='Media Type Supported',value,NULL))
AS `Media Type Supported`
FROM search_export
GROUP BY ProductId
Se o possível
Nome
os valores são dinâmicos, você pode gerar esse SQL em uma linguagem de nível superior a partir dos resultados de:SELECT DISTINCT Name FROM search_export
De fato, pode-se até usar o próprio SQL:
SELECT CONCAT('
SELECT ProductId, ',
GROUP_CONCAT('
GROUP_CONCAT(IF(Name=',QUOTE(Name),',value,NULL))
AS `',REPLACE(Name,'`','``'),'`'
), '
FROM search_export
GROUP BY ProductId
')
INTO @sql
FROM (
SELECT DISTINCT Name FROM search_export
) t;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Observe que, se houver muitos
Nome
diferentes valores, pode ser necessário aumentar group_concat_max_len
de seu padrão de 1KiB.