假設有一張TABLE為學生成績表(STUDENT),內容如下Name     subject results
Steven 語文 80
Steven 數學 90
Steven 外語 85
Hill 語文 85
Hill 數學 92
Hill 外語 82
我想通過查詢後顯示出如下內容,SQL如何寫姓名 語文 數學 外語
Steven 80 90 85
Hill 82 92 82

解决方案 »

  1.   

    两种方法
    1. 
    select s1.Name,
    s1.results as 語文,
    s2.results as 數學,
    s3.results as 數學
    from STUDENT s1 inner join STUDENT s2 on s1.Name=s2.Name
    inner join STUDENT s2 on s1.Name=s3.Name
    where s1.subject='語文'
    and s2.subject='數學'
    and s3.subject='外語'2.
    select Name,
    sum(if(subject='語文',results,0)) as 語文,
    sum(if(subject='數學',results,0)) as 數學,
    sum(if(subject='外語',results,0)) as 外語
    from STUDENT
    group by Name