针对SQL横向表转纵向的问题,本文从实际应用出发,详细讲解了语法和操作步骤,并结合实例进行了演示和说明。文章还探讨了该方法的优缺点,提出了一些值得注意的事项,旨在帮助读者更深入地理解这一重要的数据处理技巧
一、横表简单概述
横表是普通的建表方式。例如:表结构为主键、字段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 ts
group by ts.student_name;
四、横表转纵表代码如下以及视图展示
1.横表视图如下:
2.横表转换成纵表视图如下:
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 横表与纵表转换内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:SQL如何实现横表与纵表相互转换


基础教程推荐
- oracle19c卸载教程的超详细教程 2023-07-23
- Windows10系统中Oracle完全卸载正确步骤 2023-07-24
- Mariadb数据库主从复制同步配置过程实例 2023-07-25
- redis 数据库 2023-09-13
- Python常见库matplotlib学习笔记之画图中各个模块的含义及修改方法 2023-07-27
- oracle数据库排序后如何获取第一条数据 2023-07-24
- Java程序员从笨鸟到菜鸟(五十三) 分布式之 Redis 2023-09-11
- redis乐观锁与悲观锁的实战 2023-07-13
- SQL Server如何设置用户只能访问特定数据库和访问特定表或视图 2023-07-29
- Python安装第三方库的方法(pip/conda、easy_install、setup.py) 2023-07-28