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

Ustawianie wartości kolumn jako nazw kolumn w wyniku zapytania SQL

Odbywa się to za pomocą tabeli przestawnej . Grupowanie według id , wystawiasz CASE oświadczenia dla każdej wartości, którą chcesz przechwycić w kolumnie i użyj czegoś takiego jak MAX() agregować, aby wyeliminować wartości null i zwinąć w dół do jednego wiersza.

SELECT
  id,
  /* if col1 matches the name string of this CASE, return col2, otherwise return NULL */
  /* Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per id */
  MAX(CASE WHEN (col1 = 'name') THEN col2 ELSE NULL END) AS name,
  MAX(CASE WHEN (col1 = 'name2') THEN col2 ELSE NULL END) AS name2,
  MAX(CASE WHEN (col1 = 'name3') THEN col2 ELSE NULL END) AS name3
FROM
  yourtable
GROUP BY id
ORDER BY id

Oto działająca próbka

Uwaga:Działa to tylko w przypadku skończonej i znanej liczby możliwych wartości dla col1 . Jeśli liczba możliwych wartości jest nieznana, musisz zbudować instrukcję SQL dynamicznie w pętli.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zmienić wartość automatycznego przyrostu bazy danych MySQL / MariaDB?

  2. Sterownik MySQL JDBC 5.1.33 — problem ze strefą czasową

  3. Przewodnik po projektowaniu bazy danych dla biuletynu w MySQL

  4. Jak sprawdzić uprawnienia użytkownika w MySQL Workbench za pomocą GUI

  5. Nieprawidłowy numer parametru:parametr nie został zdefiniowany Wstawianie danych