温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SQL怎么实现横表与纵表相互转换

发布时间:2023-05-05 15:14:44 来源:亿速云 阅读:140 作者:iii 栏目:开发技术

这篇文章主要讲解了“SQL怎么实现横表与纵表相互转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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怎么实现横表与纵表相互转换这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql
AI