Mysql
 sql >> Base de données >  >> RDS >> Mysql

Créer un résultat récapitulatif avec une requête

Il s'agit d'une requête pivot standard :

  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

Pour le rendre dynamique, vous devez utiliser Syntaxe SQL dynamique de MySQL appelée instructions préparées . Il nécessite deux requêtes - la première obtient une liste de characteristic_name valeurs, afin que vous puissiez concaténer la chaîne appropriée dans les expressions CASE comme vous le voyez dans mon exemple comme requête ultime.