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

MySQL Połącz wiele wierszy jako kolumny

INNER JOIN zaspokoi Twoje potrzeby. MySQL nie ma PIVOT funkcji, możesz nadal symulować ją za pomocą CASE i MAX() funkcja.

SELECT  a.ID, a.NAME,
        MAX(CASE WHEN b.Race_Number = 1 THEN b.Place ELSE NULL END) Race1,
        MAX(CASE WHEN b.Race_Number = 2 THEN b.Place ELSE NULL END) Race2,
        MAX(CASE WHEN b.Race_Number = 3 THEN b.Place ELSE NULL END) Race3
FROM    Table1 a
        INNER JOIN Table2 b
            ON a.ID = b.ID
GROUP   BY a.ID, a.Name

Ale jeśli masz nieznaną liczbę RACE , a następnie DYNAMIC SQL jest znacznie bardziej preferowany.

SET @sql = NULL;
SELECT
    GROUP_CONCAT(DISTINCT
    CONCAT('MAX(CASE WHEN b.Race_Number = ', Race_Number,
      ' THEN b.Place END) AS ', CONCAT('`Race', Race_Number, '`'))
    ) INTO @sql
FROM Table2;

SET @sql = CONCAT('SELECT s.Student_name, ', @sql, ' 
                   FROM Table1 a
                   LEFT JOIN Table2 b 
                        ON ON a.ID = b.ID
                   GROUP   BY a.ID, a.Name');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabela Mysql z indeksem złożonym, ale bez klucza podstawowego

  2. Mysql tworzy tabelę z wieloma kluczami obcymi przy usuwaniu zestawu null

  3. Uzyskać nowy identyfikator klucza podstawowego rekordu z zapytania wstawiającego MySQL?

  4. Uzyskaj ostatni odrębny zestaw rekordów

  5. Hosting MySQL na platformie Azure, w pełni zarządzana usługa bazy danych w chmurze wprowadzana na ScaleGrid