科目有语文,数学,英语
2。查询每个班级各科目的平均成绩
1.查询学生编号,姓名,语文,数学,英语 没成绩的为0
查询学生编号,姓名,语文,数学,英语 没成绩的为0
追答selecct a.编号,a.姓名,case when 科目编号='语文' then b. avg(isnull(b.成绩,0)) end as 语文成绩,case when 科目编号='数学' then b. avg(isnull(b.成绩,0)) end as 数学成绩,case when 科目编号='英语' then b. avg(isnull(b.成绩,0)) end as 英语成绩
from 学生表 a join 成绩表 b on a.编号=b.学生编号
group by a.编号,a.姓名
成绩这个地方有疑问,如果一个学生一科有两个成绩,是取最小?最大?平均值?我这里用的是平均值,你可根据实际需要改,如果你编号、学科为主键保证不会重,那么用哪个都无所谓
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "student.id"。
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "sscore.sid"。
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "student.id"。
无法绑定由多个部分组成的标识符 "student.name"。
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "sscore.name"。
不好意思,表别名没改
selecct a.编号,a.姓名,case when b.科目编号='语文' then avg(isnull(b.成绩,0)) end as 语文成绩,case when b.科目编号='数学' then avg(isnull(b.成绩,0)) end as b.数学成绩,case when b.科目编号='英语' then avg(isnull(b.成绩,0)) end as 英语成绩
from 学生表 a join 成绩表 b on a.编号=b.学生编号
group by a.编号,a.姓名
消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 'sscore.sname' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
给哥你的sql语句行不?这么整受不了了
本回答被提问者采纳参考资料:浙江省义乌市义亭镇中