码迷,mamicode.com
首页 > 数据库 > 详细

SQL横表纵表转换和对比

时间:2017-02-28 00:18:39      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:span   添加   ges   code   vertica   course   sql   com   字段   

横表转纵表

横表样式:

技术分享

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横表纵表转换和对比

标签:span   添加   ges   code   vertica   course   sql   com   字段   

原文地址:http://www.cnblogs.com/sunice/p/6476770.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!