首页 > 解决方案 > 将多行数据合并到同一行和不同的列中:mysql

问题描述

假设您有以下基表:

student_id  student_name  course_name   subscribed 
--------------------------------------------------
    001       vishnu        english      YES
    001       vishnu        arabic       NO
    001       vishnu        chinese      YES

我需要以下格式:

student_id  student_name     english   arabic  chinese
------------------------------------------------------
    001     vishnu             YES       NO     YES     

我需要这个 mysql 查询。请帮助或指导我正确的方向。

标签: mysqlsql

解决方案


您可以尝试使用条件聚合

select student_id, student_name,
       max(case when course_name='english' then subscribed end) as english,
       max(case when course_name='arabic' then subscribed end) as arabic,
       max(case when course_name='chinese' then subscribed end) as chinese
from tablename group by student_id, student_name

推荐阅读