Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изберете стойност на колона като име на колона с условия в SQL таблица

Един от начините да направите това е да използвате условно агрегиране

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
 

Другият начин (ако се интересувате само от тези две колони) би бил

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

Предполага се, че за всяко име съществуват както пол, така и възраст. Ако не е така, тогава използвайте OUTER JOIN вместо INNER JOIN така

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

Изход:

<пред>| ИМЕ | ПОЛ | ВЪЗРАСТ ||--------|-------|-----|| Анджела | Жена | 28 || Дейвис | Мъжки | 30 |

Ето SQLPiddle демонстрация



  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 &JDBC

  2. Как да напишете HQL JOIN заявка за избрани колони от множество таблици с помощта на конструктор в клаузата за избор

  3. Mysql рекурсия?

  4. Как:Почистване на mysql InnoDB машина за съхранение?

  5. изграждане на ролеви приложения