sql >> Databáze >  >> RDS >> Mysql

Jak vybrat hodnotu sloupce jako název sloupce s podmínkami v tabulce SQL

Jedním ze způsobů, jak toho dosáhnout, je použití podmíněné agregace

SELECT name,
       MAX(CASE WHEN field = 'Gender' THEN value END) gender,
       MAX(CASE WHEN field = 'Age' THEN value END) age
  FROM customers
 GROUP BY name

Jiný způsob (pokud vás zajímají pouze tyto dva sloupce) by byl

SELECT c1.name, c1.value gender, c2.value age
  FROM customers c1 JOIN customers c2
    ON c1.name = c2.name
   AND c1.field = 'Gender'
   AND c2.field = 'Age';

Předpokládá se, že pro každé jméno existuje jak pohlaví, tak věk. Pokud tomu tak není, použijte OUTER JOIN namísto INNER JOIN takhle

SELECT n.name, c1.value gender, c2.value age
  FROM
(
  SELECT DISTINCT name
    FROM customers
) n LEFT JOIN customers c1
    ON n.name = c1.name AND c1.field = 'Gender' 
    LEFT JOIN customers c2
    ON n.name = c2.name AND c2.field = 'Age';

Výstup:

|   NAME | GENDER | AGE |
|--------|--------|-----|
| Angela | Female |  28 |
|  Davis |   Male |  30 |

Zde je SQLFiddle demo



  1. Jsou uvozovky kolem tabulek a sloupců v dotazu MySQL opravdu nutné?

  2. Jak vytvořit skutečný vztah jeden k jednomu na serveru SQL Server

  3. Jak opravit nevyřešený externí symbol kvůli MySql Connector C++?

  4. Jak převedu skript pomocí funkcí mysql_ na použití funkcí mysqli_?