Sql表中字段的内容成为字段,如何写T-sql语句

零点起飞 2010-01-06 11:07:36
学生成绩信息三个表,结构如下:
学生表:Member
字段名称 数据类型 说明
MID Char(10) 学生号,主键
MName Char(50) 姓名
课程表:
字段名称 数据类型 说明
FID Char(10) 课程,主键
FName Char(50) 课程名
成绩表:Score
字段名称 数据类型 说明
SID int 自动编号,主键,成绩记录号
FID Char(10) 课程号,外键
MID Char(10) 学生号,外键
Score int 成绩
请编写T-SQL语句来实现如下功能:
1) 查询各个学生语文、数学、英语、历史课程成绩,例如下表:
姓名 语文 数学 英语 历史
张萨 78 67 89 76
王强 89 67 84 96
李三 70 87 92 56
李四 80 78 97 66
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
零点起飞 2010-01-07
  • 打赏
  • 举报
回复
谢谢,非常感谢!
dawugui 2010-01-06
  • 打赏
  • 举报
回复
select m.MName 姓名,
max(case n.FName when '语文' then p.Score else 0 end) [语文],
max(case n.FName when '数学' then p.Score else 0 end) [数学],
max(case n.FName when '英语' then p.Score else 0 end) [英语],
max(case n.FName when '历史' then p.Score else 0 end) [历史]
from Member m , 课程表 n , Score p
where m.MID = p.MID and p.FID = n.FID
group by m.MName
百年树人 2010-01-06
  • 打赏
  • 举报
回复
select a.NName,
max(case when b.fname='语文' then c.Score else 0 end) as 语文,
max(case when b.fname='数学' then c.Score else 0 end) as 数学,
max(case when b.fname='英语' then c.Score else 0 end) as 英语,
max(case when b.fname='历史' then c.Score else 0 end) as 历史
from
member a,课程表 b,score c
where
a.mid=c.mid and b.fid=c.fid
group by
a.nname

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧