仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 788|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL教程之一句Sql把纵向表转为横向表,并分离分组...

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:15:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
与数据库相关的流程的逐渐标准化,使得解决方案提供商能以更便捷的方式提供服务、部署应用程序、规划容量和管理资源。DBaaS模式还有助于减少数据和数据库的冗余度并提升整体服务质量。效果如图所示:

测试sql语句以下:
复制代码代码以下:
declare@tabtable(Classvarchar(20),Studentvarchar(20),Coursevarchar(50),Quantitydecimal(7,2));
insertinto@tab(Class,Student,Course,Quantity)values("A班","张三","语文",60);
insertinto@tab(Class,Student,Course,Quantity)values("A班","张三","数学",70);
insertinto@tab(Class,Student,Course,Quantity)values("A班","张三","英语",80);
insertinto@tab(Class,Student,Course,Quantity)values("A班","李四","语文",30);
insertinto@tab(Class,Student,Course,Quantity)values("A班","李四","数学",40);
insertinto@tab(Class,Student,Course,Quantity)values("A班","李四","英语",50);

insertinto@tab(Class,Student,Course,Quantity)values("B班","王五","语文",65);
insertinto@tab(Class,Student,Course,Quantity)values("B班","王五","数学",75);
insertinto@tab(Class,Student,Course,Quantity)values("B班","王五","英语",85);
insertinto@tab(Class,Student,Course,Quantity)values("B班","赵六","语文",35);
insertinto@tab(Class,Student,Course,Quantity)values("B班","赵六","数学",45);
insertinto@tab(Class,Student,Course,Quantity)values("B班","赵六","英语",55);



select*from@tab

select
(casewhenGrouping(Class)=1then"总均匀"whenGrouping(Student)=1then""elseClassend)asClass
,(casewhenGrouping(Class)=1then""whenGrouping(Student)=1then"均匀"elseStudentend)asStudent
,avg(语文)as语文
,avg(数学)as数学
,avg(英语)as英语
,avg(总分)as总分
from(
selectClass,Student
,(selectisnull(sum(Quantity),0)from@tabwhereClass=t.ClassandStudent=t.StudentandCourse="语文")as"语文"
,(selectisnull(sum(Quantity),0)from@tabwhereClass=t.ClassandStudent=t.StudentandCourse="数学")as"数学"
,(selectisnull(sum(Quantity),0)from@tabwhereClass=t.ClassandStudent=t.StudentandCourse="英语")as"英语"
,(selectisnull(sum(Quantity),0)from@tabwhereClass=t.ClassandStudent=t.Student)as"总分"
from@tabast
groupbyClass,Student
)astempTab
groupbyClass,Student,语文,数学,英语,总分withrollup
havingGrouping(语文)=1
andGrouping(数学)=1
andGrouping(英语)=1
如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。
再现理想 该用户已被删除
沙发
发表于 2015-1-19 06:03:49 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
若天明 该用户已被删除
板凳
发表于 2015-1-24 16:30:03 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
精灵巫婆 该用户已被删除
地板
发表于 2015-2-2 10:56:21 | 只看该作者
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
只想知道 该用户已被删除
5#
发表于 2015-2-7 18:30:10 | 只看该作者
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
再见西城 该用户已被删除
6#
发表于 2015-2-22 22:51:38 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
小女巫 该用户已被删除
7#
发表于 2015-3-7 04:11:18 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
不帅 该用户已被删除
8#
发表于 2015-3-14 11:46:35 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-21 06:58:11 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-21 09:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表