问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何进行Excel 2007数据的行列转换呢

发布网友 发布时间:2022-04-26 16:16

我来回答

2个回答

懂视网 时间:2022-05-04 04:48

问题描述 在评教系统中查询教师成绩处涉及到了数据的行转列应用,首先介绍下行转列要解决的问题: 我们数据库中存储的数据结构类似为: 而最后我们要达到的查询效果为: 我们将课程列分成了三列,而对应的分数列的数据作为记录插入到了相应课程的后面。 功能



问题描述

在评教系统中查询教师成绩处涉及到了数据的行转列应用,首先介绍下行转列要解决的问题:

我们数据库中存储的数据结构类似为:

而最后我们要达到的查询效果为:

我们将课程列分成了三列,而对应的分数列的数据作为记录插入到了相应课程的后面。

功能来源

为什么会出现这样的需求呢?

数据库设计的过程中为了满足用户的动态要求(添加字段),可以采用定义字段名表,定义一个字段值的表,以达到用静态表达动态。也就是说以数据库表纵向的增加替代原有的横向延伸,即记录条数的增加替代字段增加。

这样的设计带来了灵活,但同时带来了统计分析的麻烦,因为统计分析时有可能需要显示字段展开的情况。如评教系统中的具体实现:

由于考核项目会进行动态的添加删除,因此设置的考核项目表,存储对教师的考核项目

而存储教师评教分数的表需要获取考核项目数据,存储图示为:

最终需要的显示效果是要将考核项目列为标题,而分值作为记录添加到对应的考核项目下。

此处我们我们通过将动态变化的考核项目作为新的表的记录来存储带来了设计的灵活性,而显示的时候却要进行行列的转换才能得到想要的结果。

具体实现

查找相关资料进行实现,明白了行转列又分成了静态和动态之分,静态的是不需要扩展的,很容易实现,而针对评教系统中的功能则是对应的动态实现。

针对第一个实例

1.通过执行字符串的拼接实现动态行转列

--变量按sql语言顺序赋值

declare @sql varchar(500)

set @sql = 'select 姓名'

select @sql = @sql+',max(case 课程 when '''+ 课程 +''' then 分数 else 0 end)['+课程+']'

from(select distinct 课程 from tb)a	--同from tb group by课程,默认按课程名排序

set @sql= @sql + ' from tb group by 姓名'

exec(@sql)

2.使用isnull、pivot函数

declare @sql varchar(8000)

--获得课程集合

select @sql=isnull(@sql+',','')+ 课程 from tb group by 课程  

set @sql='select * from tb pivot (max(分数) for 课程 in ('+@sql+')) a'

exec(@sql)

3.添加算总分、平均分的要求

declare @sql varchar(8000)

select @sql=isnull(@sql+',','')+ 课程 from tb group by 课程

set @sql='select m.* , n.总分,n.平均分 from

(select * from (select * from tb) a pivot (max(分数) for 课程 in ('+

 @sql+')) b) m ,

(select 姓名,sum(分数)总分, cast(avg(分数*1.0) as decimal(18,2)) 平均分 from tb group by 姓名) n

where m.姓名= n.姓名'

exec(@sql)

新得小结

虽然评教系统中已经实现了对行列数据的转换,但想要使用另外一种方法进行实现。进行了对行转列功能的搜索实现之后,在转接到评教系统上的应用上来还是碰到了很多问题,到现在仍没有完全解决,只得暂时先放一放了。对数据库的灵活设计也有了一定的体会,在考虑灵活性的同时也要考虑用户的体验度的。对行列互相转换的还是需要更多的思考呀。

热心网友 时间:2022-05-04 01:56

许多时候我们都会在Microsoft的Excel 2007中汇总处理一些表格,可是,在汇总的时候常会遇到这样一个问题:各个表格的排序结果有的是竖排,有的是横排。往一块儿汇总势必得按同一种方式排列才能排出结果,看来还必须对Excel 2007数据的行列进行转换。 如何进行Excel 2007数据的行列转换呢?难不成得手工一个一个地剪切、粘贴吗?当然不必,Excel软件早就给我们提供了这个功能。操作如下:
第一步,“选中”要转换数据的所在区域,然后点击“复制”;
第二步,将指针移动到合适的单元格,点击右键,在右键菜单中选择的“选择性粘贴”;
第三步,在弹出的“选择性粘贴”对话框中,用鼠标左键将右下角的“转置”选中,最后点击“确定”即可。
这样,在粘贴的区域中就会出现最终结果,行转换成了列,或是列转换成了行。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
儿歌祖国妈妈我爱你是谁写的汇总28句 为什么有的人学几何很厉害数学却不行 一个人数学几何好,但是其他计算方面的都马马虎虎,那么说明这个人怎么... 数学几何好的人,就是一道几何题很快就能想出来的人是不很聪明?这能练... 固安尚城国际怎么样 驾驶员咨询服务营业执照经营范围怎么写 驾校属于什么经营范围 核桃粉保质期多长时间 亿生康宝筋骨冷敷凝胶只在国内销售吗? 清河镇概况 电脑显示屏灯光 显示器为什么会发光?(具体看补充问题) 电脑显示器屏幕是对着光好还是背着光好? 青菜烧一下放冰箱能放多久 电脑显示器桌面炫光怎么回事 电脑屏幕刺眼,好象跟调节显示器光亮度没关系,请问 我的电脑显示器光闪动 显示器黑光是怎么来的 显示器为什么会发光 电脑显示屏显示光,是哪里出了问题。 什么是后面板3.5mm插座 3.5mm的耳机插在电脑上不显示 液晶显示器的光太刺眼 电脑显示屏的光怎样调暗? 游戏本3.5mm耳机接口在游戏中拔下来再插上去就没声音了,打开声音管理器... 耳机插孔是3.5的但是插不上怎么办? 3.5mm耳机插座规格具体是怎样的 台式机面板上最左右3.5mm接口是什么接口? 笔电3.5mm接上耳机 声音面板显示有声音 但听不到? 闽侯县小学英语教材是用哪个版本的?闽教版还是人教版? iphone怎么itunes导入照片 excel中怎样进行行列转换 如何将excel中的数据行列转换 itunes怎样导入照片 WD白盘跟黑盘有什么区别 不扣钮的女孩的剧情简介 西部数据怎么会有白盘的 【硬盘问题】什么是白盘? 不扣钮的女孩的介绍 WD1TB硬盘 硬盘套WD黑盘是什么意思?白盘又是什么?我新手,自己琢磨的。话说,去中关村网站上,看主板的时候,参数 不钮扣的女孩演员 西数硬盘怎么看黑盘还是白盘 求不扣钮的女孩 WD1TB的硬盘是蓝盘好还是绿盘好? 2个硬盘 WD2500AAJS和WD2500JS哪个好些? 李丽珍《不扣钮的女孩》下载种子 不扣钮的女孩有的话请发到909827088@qq.com 西数黑盘和希捷白盘哪个好都是7200转? WD 500G的硬盘二手的多少钱一块