Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Criar um resultado resumido com uma consulta


Esta é uma consulta dinâmica padrão:
  SELECT uc.uut_sn,
         MAX(CASE 
               WHEN uc.characteristic_name = 'char_name_1' THEN uc.characteristic_value 
               ELSE NULL 
             END) AS char_name_1,
         MAX(CASE 
               WHEN uc.characteristic_name = 'char_name_2' THEN uc.characteristic_value 
               ELSE NULL 
             END) AS char_name_2,
         MAX(CASE 
               WHEN uc.characteristic_name = 'char_name_3' THEN uc.characteristic_value 
               ELSE NULL 
             END) AS char_name_3,
    FROM unit_characteristics uc
GROUP BY uc.uut_sn

Para torná-lo dinâmico, você precisa usar Sintaxe SQL dinâmica do MySQL chamada Instruções Preparadas . Requer duas consultas - a primeira obtém uma lista do characteristic_name valores, para que você possa concatenar a string apropriada nas expressões CASE, como você vê no meu exemplo como a consulta final.