Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wybrać wartość kolumny jako nazwę kolumny z warunkami w tabeli SQL?

Jednym ze sposobów na to jest użycie agregacji warunkowej

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

Innym sposobem (jeśli interesują Cię tylko te dwie kolumny) byłoby

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';

Założenie jest takie, że dla każdego Imienia istnieje zarówno Płeć, jak i Wiek. Jeśli tak nie jest, użyj OUTER JOIN zamiast INNER JOIN lubię tak

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';

Wyjście:

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

Oto SQLFiddle demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql order by rand() problem z wydajnością i rozwiązanie

  2. sprawdź, czy wynik zapytania jest pustym wierszem mysqli

  3. Jak stworzyć bazę danych mysql za pomocą sequelize (nodejs)

  4. MySQL - Używanie If Then Else w MySQL UPDATE lub SELECT Query

  5. „max_user_connections” ustawiono na 200 – nadal pojawia się błąd