SQL語句 把統計結果按照特定的列值轉換成多列

2021-05-05 21:30:56 字數 1548 閱讀 3655

要求:查詢每個老師所帶畢業設計的彙總情況,畢業設計學生分本科、專科,院外、院內,要求得到的結果形式如下:

教師名 院內本科 園內專科 院外本科 院外專科 合計

sql語句如下:

select

teacher.teacher_name,ifnull(c1.c,0) v1,ifnull(c2.c,0) v2,ifnull(c3.c,0) v3,ifnull(c4.c,0) v4,

(ifnull(c1.c,0)+ifnull(c2.c,0)+ifnull(c3.c,0)+ifnull(c4.c,0)) sum

from teacher

left outer join

(select

teacher_id,count(*) c

from

taskbook,student 

where

taskbook.taskbook_inner_task='院內' and degree_id>1 and student.student_id=taskbook.student_id

group by

teacher_id

) c1 using(teacher_id) 

left outer join

(select

teacher_id,count(*) c

from

taskbook,student

where

taskbook.taskbook_inner_task='院內' and degree_id=1 and student.student_id=taskbook.student_id

group by

teacher_id

) c2 using(teacher_id)

left outer join

(select

teacher_id,count(*) c

from

taskbook,student

where

taskbook.taskbook_inner_task='院外' and degree_id>1 and student.student_id=taskbook.student_id

group by

teacher_id

) c3 using(teacher_id)

left outer join

(select

teacher_id,count(*) c

from

taskbook,student

where

taskbook.taskbook_inner_task='院外' and degree_id=1 and student.student_id=taskbook.student_id

group by teacher_id

) c4 using(teacher_id);

類似的問題有:在乙個表中儲存了學生的所有選修課程成績,典型的列有:學號、課程號、成績。需要得到的結果如下:

學號 課程1成績 課程2成績 課程3成績

SQL語句 把統計結果按照特定的列值轉換成多列

要求 查詢每個老師所帶畢業設計的彙總情況,畢業設計學生分本科 專科,院外 院內,要求得到的結果形式如下 教師名 院內本科 園內專科 院外本科 院外專科 合計 sql語句如下 select teacher.teacher name,ifnull c1.c,0 v1,ifnull c2.c,0 v2,i...

SQL語句 把統計結果按照特定的列值轉換成多列

要求 查詢每個老師所帶畢業設計的彙總情況,畢業設計學生分本科 專科,院外 院內,要求得到的結果形式如下 教師名 院內本科 園內專科 院外本科 院外專科 合計 sql語句如下 select teacher.teacher name,ifnull c1.c,0 v1,ifnull c2.c,0 v2,i...

統計勝負結果的SQL語句

統計勝負結果的sql語句,這裡採用子查詢來實現。表結構和資料 date result 2011 02 01 勝 2011 02 01 負 2011 02 01 勝 2011 02 02 勝 2011 02 02 負 採用子查詢 select date,select count from table1...