Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen Sie mit einer Abfrage ein zusammenfassendes Ergebnis

Dies ist eine Standard-Pivot-Abfrage:

  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

Um es dynamisch zu machen, müssen Sie verwenden MySQLs dynamische SQL-Syntax namens Prepared Statements . Es erfordert zwei Abfragen - die erste erhält eine Liste des characteristic_name Werte, sodass Sie die entsprechende Zeichenfolge in die CASE-Ausdrücke verketten können, wie Sie es in meinem Beispiel als ultimative Abfrage sehen.