我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL如何实现横表与纵表相互转换

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL如何实现横表与纵表相互转换

一、横表简单概述

横表是普通的建表方式。例如:表结构为主键、字段1、字段2、字段3…。

二、纵表简单概述

纵表的表结构为主键、字段代码、字段值,字段代码则为字段1、字段2、字段3…。

三、纵表转横表代码如下以及视图展示

1.纵表视图如下:

SQL如何实现横表与纵表相互转换

2.纵表转换成横表视图如下:

SQL如何实现横表与纵表相互转换

3.sql语句如下所示:

select student_name,
	sum(case ts.subject when 'C语言' then ts.score else '' end) as C语言,
	sum(case ts.subject when '数据结构' then ts.score else '' end) as 数据结构,
	sum(case ts.subject when '操作系统' then ts.score else '' end) as 操作系统
from t_student ts
group by ts.student_name;

四、横表转纵表代码如下以及视图展示

1.横表视图如下:

SQL如何实现横表与纵表相互转换

2.横表转换成纵表视图如下:

SQL如何实现横表与纵表相互转换

3.sql语句如下所示:

select ts.studnet_name,
'C语言' as 科目,
ts.`C语言` as 成绩
from t_student1 ts
union all
select ts.studnet_name,
'数据结构' as 科目,
ts.`数据结构` as 成绩
from t_student1 ts
union all
select ts.studnet_name,
'操作系统' as 科目,
ts.`操作系统` as 成绩
from t_student1 ts
order by studnet_name,科目

五、横表、纵表优点与缺点

1.横表
优点:一行表示了一个实体记录,清晰可见。
缺点:如果现在要给这个表加一个字段,那么就必须重建表结构。

2.纵表
优点:如果现在要给这个表加一个字段,只需要添加一些记录。
缺点:数据描述不是很清晰,而且会造成数据库数据很多。另如果需要分组统计,要先group by,较繁琐

六、总结

应该把不容易改动表结构的设计成横表,把容易经常改动不确定的表结构设计成纵表。

到此这篇关于SQL如何实现横表与纵表相互转换的文章就介绍到这了,更多相关SQL 横表与纵表转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL如何实现横表与纵表相互转换

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SQL如何实现横表与纵表相互转换

目录一、横表简单概述二、纵表简单概述三、纵表转横表代码如下以及视图展示四、横表转纵表代码如下以及视图展示五、横表、javascript纵表优点与缺点六、总结一、横表简单概述横表是普通的建表方式。例如:表结构为主键、字段1、字段2、字段3&
2023-04-24

MySQL横纵表相互转化操作实现方法

本文实例讲述了MySQL横纵表相互转化操作实现方法。分享给大家供大家参考,具体如下: 先创建一个成绩表(纵表)create table user_score (name varchar(20),subjects varchar(20),sc
2022-05-24

Java BeanMap如何实现Bean与Map的相互转换

本篇内容主要讲解“Java BeanMap如何实现Bean与Map的相互转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java BeanMap如何实现Bean与Map的相互转换”吧!bean
2023-07-04

如何用ADO.NET实现txt与Excel的互相转换

本篇文章为大家展示了如何用ADO.NET实现txt与Excel的互相转换,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在园子里看过很多文章,关于设计模式,关于架构等等,我在这里谈谈一些软件的功能,为
2023-06-17

abap结构或内表怎么实现与json字符串相互转换.

本篇内容介绍了“abap结构或内表怎么实现与json字符串相互转换.”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!可使用的类有很多,如cl_
2023-06-04

Python PyMuPDF如何实现PDF与图片和PPT相互转换

这篇文章主要介绍了Python PyMuPDF如何实现PDF与图片和PPT相互转换的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python PyMuPDF如何实现PDF与图片和PPT相互转换文章都会有所收获,
2023-07-04

java项目中如何实现集合的相互转换

这篇文章给大家介绍java项目中如何实现集合的相互转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.List转换为ArrayList list = new ArrayList();
2023-05-31

如何使用JAXBContext实现Java和xml的互相转换

这篇文章主要介绍了如何使用JAXBContext实现Java和xml的互相转换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JAXBContext实现Java和xml的互相转
2023-06-20

python中CURL和python requests的相互转换如何实现

今天小编给大家分享一下python中CURL和python requests的相互转换如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一
2023-07-05

Java如何使用poi做加自定义注解实现对象与Excel相互转换

这篇文章将为大家详细讲解有关Java如何使用poi做加自定义注解实现对象与Excel相互转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引入依赖maven
2023-06-15

SQL Server如何使用PIVOT与unPIVOT实现行列转换

这篇“SQL Server如何使用PIVOT与unPIVOT实现行列转换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL
2023-06-30

如何使用python opencv实现灰度图和彩色图的互相转换

这篇文章将为大家详细讲解有关如何使用python opencv实现灰度图和彩色图的互相转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。opencv灰度图和彩色图互相转换如果摄像头本来就得到3维度红外图那
2023-06-28

如何用C语言实现将格式化数据和字符串相互转换

这篇文章主要讲解了“如何用C语言实现将格式化数据和字符串相互转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用C语言实现将格式化数据和字符串相互转换”吧!sprintf和sscanf用
2023-07-05

Go语言strconv包如何实现字符串和数值类型的相互转换

这篇文章将为大家详细讲解有关Go语言strconv包如何实现字符串和数值类型的相互转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在实际开发中我们往往需要对一些常用的数据类型进行转换,如 string、
2023-06-14

编程热搜

目录