首页 > 资讯列表 > 编程/数据库 >> 数据库操作教程

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

数据库操作教程 2023-05-12 12:12:25 转载来源: 网络整理/侵权必删

英文:How to Convert Horizontal and Vertical Tables in SQL

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

一、横表简单概述

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

二、纵表简单概述

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

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

1.纵表视图如下:

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

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 tsgroup by ts.student_name;

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

1.横表视图如下:

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

3.sql语句如下所示:

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

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

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

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

六、总结

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

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

英文:How to Convert Horizontal and Vertical Tables in SQL

标签: SQL 如何 实现 横表 纵表 相互 转换


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持