sql >> Databasteknik >  >> RDS >> Mysql

Skapa ett sammanfattande resultat med en fråga

Detta är en vanlig pivotfråga:

  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

För att göra det dynamiskt måste du använda MySQL:s dynamiska SQL-syntax som kallas Prepared Statements . Det kräver två frågor - den första får en lista med characteristic_name värden, så att du kan sammanfoga den lämpliga strängen i CASE-uttrycken som du ser i mitt exempel som den ultimata frågan.



  1. PDO, $_GET och SELECTing från MySQL Database

  2. Oändlig PHP while loop

  3. En rad frågor för 'for await'-loop för postgresql-transaktionshjälp

  4. Varför lägger Oracles to_char()-funktion till mellanslag?