永发信息网

关于SQL查询问题

答案:7  悬赏:70  手机版
解决时间 2021-05-08 00:13

请大家帮忙了 实现查询出的效果的代码

表名为StudentScore,name列,subject列,score列

张三 语文 50
张三 数学 80
张三 英语 60
李四 语文 65
李四 英语 50
王五 数学 85
王五 英语 30
老六 语文 66
老六 数学 55
老六 英语 88


查询出来的结果为:

姓名 语文 数学 英语
张三 50 80 60
李四 65 缺考 50
王五 缺考 85 30
老六 66 55 88

谢谢大家了 这个查询语句怎么写~

最佳答案



TX莫名其妙,说我的回答已被之前网友使用,不给我发代码上来。害我只能截图

全部回答

select distinct name as 姓名,语文 = (case subject when '语文' then score else '缺考' end),

数学 = (case subject when '数学 then score else '缺考' end),

英语 = (case subject when '英语' then score else '缺考' end)

来个好玩的

sqlserver2005或以上支持 oracle好像也有类似语法

create table #StudentScore (name nvarchar(10),[subject] nvarchar(10),score int)

insert #StudentScore select '张三', '语文', 50 insert #StudentScore select '张三', '数学', 80 insert #StudentScore select '张三', '英语', 60 insert #StudentScore select '李四', '语文', 65 insert #StudentScore select '李四', '英语', 50 insert #StudentScore select '王五', '数学', 85 insert #StudentScore select '王五', '英语', 30 insert #StudentScore select '老六', '语文', 66 insert #StudentScore select '老六', '数学', 55 insert #StudentScore select '老六', '英语', 88

select name, isnull(cast(语文 as nvarchar),'缺考') as "语文", isnull(cast(数学 as nvarchar),'缺考') as "数学", isnull(cast(英语 as nvarchar),'缺考') as "英语" from #StudentScore pivot ( sum(score) for [subject] in ([语文],[数学],英语) ) as pvt

drop table #StudentScore

select distinct([Name]),语文=isnull((select score from StudentScore where subject='语文' and [Name]=t.[Name]),'缺考'),数学=isnull((select score from StudentScore where subject='语文' and [Name]=t.[Name]),'缺考'),英语=isnull((select score from StudentScore where subject='英语' and [Name]=t.[Name]),'缺考') from StudentScore as t

前提条件 保证子查询中 只有一条记录

表中不能有 类似

张三 语文 50

张三 语文 60

这样的情况出现

如果有这种情况

子查询中必须加入条件

也许两个成绩是 张三两个学期的考试成绩

大概这样 抛砖 引玉

用分组实现:

select name,subject,score from StudentScore group by(name);

SELECt name,subject,score

FROM StudentScore

where name="张三" or name="李四" or name="王五" or name="老六"

select name as'姓名'

,(select score from StudentScore as s where s.name=t.name and subject='语文' ) as '语文'

,(select score from StudentScore as s where s.name=t.name and subject='数学' ) as '数学'

,(select score from StudentScore as s where s.name=t.name and subject='英语' ) as '英语' from StudentScore as t

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
cc域名是不是永久的
请问在冬天有什么方法可以瘦腿的啊,还有瘦腿
为什么我的联众世界一登陆完成就出现Error 10
南宁面料(布料市场)房租多少?
二十一岁应该补充维生素几
一首伤心的歌曲`~可以想起家乡的歌曲
鸽子琴行四岔店在哪里啊,我有事要去这个地方
手机网络电视在哪下载,
为什么我的笔记本玩游戏总是一会卡一会不卡
魔兽世界如何更改字体,求一个好看的魔兽世界
我身高1米88摸多高可以扣篮
求一个最新的3D动作格斗型的网游。
这样的胎动正常吗
我想买笔记本电脑主要玩游戏看电影的影音娱本
计算一道加减混合运算
推荐资讯
金淼内衣服饰专业店谈南路店在哪里啊,我有事
腾讯公司的成立时间?
谁能帮我找到这个笔刷,有的麻烦发给我 谢谢啊
冒险岛114级大副升级之路
怎样可画出灰调子水粉?
濮阳县濮阳张氏香肠在什么地方啊,我要过去处
36级紫装流光坠饰一般多少钱
心理罪电视剧邰伟在车上对方木说的那短名言
我在想当一个人对你很在乎,可是不会表达,但
绿宝石火锅城在什么地方啊,我要过去处理事情
恒企教育北市校区地址在什么地方,想过去办事
玫瑰庄园怎么新加的好友偷不了啊
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?