学生成绩表的行列转换并显示优良中差

Code_Star 2012-01-06 10:09:48
数据表原内容如下:

id name subject score
----------------------------------
1 张三 语文 80
2 张三 数学 60
3 张三 英语 90
4 李四 语文 92
5 李四 数学 65
6 李四 英语 78



想要查询并显示成如下样式:

姓名 语文 数学 英语
----------------------------------
李四 92 65 78
张三 80 60 90


这个要求我用CASE-WHEN-THEN-END结构的语句实现了。语句如下:

SELECT [name] AS 姓名,
MAX( CASE subject WHEN '语文' THEN score END) AS 语文,
MAX( CASE subject WHEN '数学' THEN score END) AS 数学,
MAX( CASE subject WHEN '英语' THEN score END) AS 英语
FROM student
GROUP BY [name]



现在我现在想要查询并显示成如下结果:
(80分及以上为优,60-79为良,小于60为差)

姓名 语文 数学 英语
----------------------------------------
李四 优 良 良
张三 优 良 优

我想到的查询方法如下:


SELECT [name] AS 姓名,
MAX( CASE subject WHEN '语文' THEN
(CASE WHEN score>=80 THEN '优' WHEN score<80 AND score >=60 THEN '良' WHEN score<60 THEN '差' END )
END) AS 语文,
MAX( CASE subject WHEN '数学' THEN
(CASE WHEN score>=80 THEN '优' WHEN score<80 AND score >=60 THEN '良' WHEN score<60 THEN '差' END )
END) AS 数学,
MAX( CASE subject WHEN '英语' THEN
(CASE WHEN score>=80 THEN '优' WHEN score<80 AND score >=60 THEN '良' WHEN score<60 THEN '差' END )
END) AS 英语
FROM student
GROUP BY [name]



第一个查询语句,貌似就是这样的,但是第二个查询语句,我总感觉有点长了。大家有没有更好的方法啊?
...全文
331 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Code_Star 2012-01-10
  • 打赏
  • 举报
回复
以前都不知道用pivot,看了两位的意见,尤其是第二位的具体case,再结合自己查的资料,相对了解一些了。谢谢各位,尤其是第二位大哥,劳你用心了。
美到心痛 2012-01-06
  • 打赏
  • 举报
回复

--2000觉得长,只有把优良差先处理了
SELECT [name] AS 姓名,
MAX( CASE subject WHEN '语文' THEN score END) AS 语文,
MAX( CASE subject WHEN '数学' THEN score END) AS 数学,
MAX( CASE subject WHEN '英语' THEN score END) AS 英语
FROM
(select name,subject,
CASE WHEN score>=80 THEN '优' WHEN score<80 AND score >=60 THEN '良' WHEN score<60 THEN '差' END score
from student ) as a
GROUP BY [name]

--2005
select * from
(select name,subject,
CASE WHEN score>=80 THEN '优' WHEN score<80 AND score >=60 THEN '良' WHEN score<60 THEN '差' END score
from student) as a
pivot(max(score) for subject in(语文,数学,英语))b

  • 打赏
  • 举报
回复
2005以上版本可以使用pivot实现,自己查一下资料,这样的例题很多
源码下载地址: https://pan.quark.cn/s/7a349ad53637 在地理信息系统(GIS)领域中,土地利用现状图被视为一种核心的数据可视化手段,其主要功能在于呈现特定区域的土地使用格局,涵盖农业、住宅、工业、绿地等多样化的土地利用类型。此类信息对于城市规划、环境分析、土地监管以及决策制定具有基础性作用。在编制土地利用现状图的过程中,符号库的构建与样式匹配环节是保障地图具备清晰度、精确性及视觉美感的核心步骤。所谓"样式匹配",是一种技术手段,旨在让用户能够将特定的符号或视觉样式与地图中的数据要素建立关联。在本资源中,提及的"样式匹配lyr"文件或许是一个ArcGIS(一种广受欢迎的GIS软件)所使用的图层样式文件,该文件内含了预设的图例符号及使用规范,用以区分不同的土地利用类别。用户若将此lyr文件导入至个人项目中,便能够迅速为土地利用现状图层赋予统一且专业的视觉现。符号库则是指存储各类图形符号的集合,这些符号在地图上代了不同的地理要素。对于土地利用现状图而言,每一类土地通常都会对应一个特定的符号,比如农田可能以绿色填充图案来现,而建筑用地则可能采用灰色的实心形状。这些符号库对于统一地图的视觉呈现至关重要,有助于观者迅速把握地图所传递的信息。在ArcGIS软件中,用户能够通过"图层属性"界面来调控图层的视觉样式。在该界面中,用户可以选择"符号"面板来设定数据的可视化方式,或选择"标签"面板来管理要素的标注规则。借助"加载样式"功能,用户可以将"样式匹配lyr"文件中的样式规则应用到当前图层,以此规避逐一对每个土地利用类型进行符号的手动配置。不仅如此,为了达成卓越的可视化效果,可能还需对其他图层属性进行微调,例如调节透明度、设置比例尺依赖...

27,580

社区成员

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

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