Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

chuyển các hàng của bảng thành cột trong mysql

Nếu bạn chỉ có hai giá trị cho item_id , sau đó nó là tốt để các giá trị mã cứng. Ví dụ

SELECT  a.Name AS Student_Name,
        MAX(CASE WHEN item_id = '01' THEN b.score END) Item_1_Score,
        MAX(CASE WHEN item_id = '02' THEN b.score END) Item_2_Score
FROM    student_info a
        LEFT JOIN scores b
            ON a.id = b.student_ID
GROUP   BY a.Name

Ngược lại, khi bạn có số điểm không xác định, một Dynamic SQL được yêu thích hơn nhiều.

SELECT  GROUP_CONCAT(DISTINCT
        CONCAT('MAX(CASE WHEN item_id = ''',
               item_id,
               ''' THEN Score END) AS ',
               CONCAT('`Item_', item_id, '_Score`')
               )) INTO @sql
FROM scores;

SET @sql = CONCAT('SELECT   a.Name AS Student_Name, ', @sql, ' 
                    FROM    student_info a
                            LEFT JOIN scores b
                                ON a.id = b.student_ID
                    GROUP   BY a.Name');

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

Cả hai truy vấn sẽ OUTPUT giống nhau

╔══════════════╦══════════════╦══════════════╗
║ STUDENT_NAME ║ ITEM_1_SCORE ║ ITEM_2_SCORE ║
╠══════════════╬══════════════╬══════════════╣
║ dan          ║           55 ║           44 ║
║ david        ║           66 ║           45 ║
║ jon          ║           37 ║           45 ║
╚══════════════╩══════════════╩══════════════╝


  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 hoặc PHP Chuyển đổi hàng thành cột

  2. Sử dụng fork trong Ruby on Rails để tạo quá trình song song

  3. PHP MySQL - Lỗi:Không có cơ sở dữ liệu nào được chọn

  4. Tạo chuỗi 8 ký tự ngẫu nhiên và duy nhất bằng MySQL

  5. Dịch chuyển bit trong mysql