MSSQL编程:完成数据分类汇总的SQL语句
其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。数据|语句现有表Test,内容以下:IDCatalogNum1A31B52A82B2如今想按ID查询出这类了局:--------------------1A31B5汇总小计:82A82B2汇总小计:10问:该怎样完成?
在天生包括小计和算计的报表时,ROLLUP运算符很有效。ROLLUP运算符天生的了局集相似于CUBE运算符所天生的了局集。========================CUBE运算符天生的了局集是多维数据集。多维数据集是现实数据的扩大,现实数据即纪录一般事务的数据。扩大创建在用户盘算剖析的列上。这些列被称为维。多维数据集是一个了局集,个中包括了各维度的一切大概组合的交织表格。CUBE运算符在SELECT语句的GROUPBY子句中指定。该语句的选择列表应包括维度列和聚合函数表达式。GROUPBY应指定维度列和关头字WITHCUBE。了局集将包括维度列中各值的一切大概组合,和与这些维度值组合相婚配的基本行中的聚合值。=========================CUBE和ROLLUP之间的区分在于:CUBE天生的了局集显现了所选列中值的一切组合的聚合。ROLLUP天生的了局集显现了所选列中值的某一条理布局的聚合。
TheROLLUPoperatorisusefulingeneratingreportsthatcontainsubtotalsandtotals.TheROLLUPoperatorgeneratesaresultsetthatissimilartotheresultsetsgeneratedbytheCUBEoperator.
ThedifferencesbetweenCUBEandROLLUPare:
CUBEgeneratesaresultsetshowingaggregatesforallcombinationsofvaluesintheselectedcolumns.ROLLUPgeneratesaresultsetshowingaggregatesforahierarchyofvaluesintheselectedcolumns.
最初查询语句以下:
SELECTCASEWHEN(GROUPING(ID)=1)THENALLELSEISNULL(ID,UNKNOWN)ENDASID,CASEWHEN(GROUPING(Catalog)=1)THENALLELSEISNULL(Catalog,UNKNOWN)ENDASCatalog,SUM(Num)ASNumFROMTestGROUPBYID,CatalogWITHROLLUP
支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 所以你总能得到相应的升级版本,来满足你的需求。 having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。 代替了原来VB式的错误判断。比Oracle高级不少。 SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。 多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油 在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。 也可谈一下你是怎么优化存储过程的? 语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
页:
[1]