SQL横表纵表转换和对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL横表纵表转换和对比相关的知识,希望对你有一定的参考价值。

横表转纵表

横表样式:

技术分享

sql语句:

1 select Name,语文 as 科目,Chinese as 成绩 from HorizontalTab
2 union all
3 select Name,数学 as 科目,Math as 成绩 from HorizontalTab
4 union all
5 select Name,英语 as 科目,English as 成绩 from HorizontalTab
6 order by Name,科目 desc

转换结果:

技术分享

横表优缺点:

优点:一行是一个实体。

缺点:添加字段,需要重新建表。

结论:改动不大的表可以使用横表。

----------------------------------------------------------- 

纵表转横表

纵表样式:

技术分享

sql语句:

1 select Name,SUM(case when course=N语文 then grade else 0 end) as 语文,
2             SUM(case when course=N数学 then grade else 0 end) as 数学,
3             SUM(case when course=N英语 then grade else 0 end) as 英语
4 from VerticalTab group by Name

 转换结果:

技术分享

纵表优缺点:

优点:加字段方便。

缺点:数据之间的关系不清晰,会有数据量猛增的情况。

结论:频繁改动不确定的表可以考虑纵表。

 

以上是关于SQL横表纵表转换和对比的主要内容,如果未能解决你的问题,请参考以下文章

Mysql 纵表转换为横表

Mysql 纵表转换为横表

SQL纵表与横表互转

sql 横表,纵表转换

纵表与横表互转实例

SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例