sql >> Database teknologi >  >> RDS >> Mysql

Opret et resuméresultat med én forespørgsel

Dette er en standard pivotforespørgsel:

  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

For at gøre det dynamisk, skal du bruge MySQLs dynamiske SQL-syntaks kaldet Prepared Statements . Det kræver to forespørgsler - den første får en liste over characteristic_name værdier, så du kan sammenkæde den passende streng i CASE-udtrykkene, som du ser i mit eksempel som den ultimative forespørgsel.



  1. SQLT og partitionering

  2. Sådan bruger du GROUP BY til at hente et resultatsæt med prioritet på alfabetisering

  3. MySQL-serveren løber tør for hukommelse eller starter ikke

  4. Indsættelse af ny række ved hjælp af en trigger på samme tabel