仓酷云

标题: MYSQL教程之一句Sql把纵向表转为横向表,并分离分组... [打印本页]

作者: 兰色精灵    时间: 2015-1-16 22:15
标题: MYSQL教程之一句Sql把纵向表转为横向表,并分离分组...
与数据库相关的流程的逐渐标准化,使得解决方案提供商能以更便捷的方式提供服务、部署应用程序、规划容量和管理资源。DBaaS模式还有助于减少数据和数据库的冗余度并提升整体服务质量。效果如图所示:
MYSQL教程之一句Sql把纵向表转为横向表,并分离分组...
登录/注册后可看大图

测试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
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
作者: 若天明    时间: 2015-1-24 16:30
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
作者: 精灵巫婆    时间: 2015-2-2 10:56
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
作者: 只想知道    时间: 2015-2-7 18:30
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
作者: 再见西城    时间: 2015-2-22 22:51
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
作者: 小女巫    时间: 2015-3-7 04:11
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
作者: 不帅    时间: 2015-3-14 11:46
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
作者: 灵魂腐蚀    时间: 2015-3-21 06:58
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2