SQL SERVER中ROLLUP 运算符的用法
问题的提出:
现有表A,内容如下:
编码 仓库 数量
01 A 6
01 B 7
02 A 8
02 B 9
现在想按编码查询出这种格式:
--------------------
01 A 6
01 B 7
汇总小计: 13
02 A 8
02 B 9
汇总小计: 17
问:该如何实现?
乍一看,好像很容易,用group by好像能实现?但仔细研究下去,你又会觉得group by也是无能为力,总欠缺点什么,无从下手。那么,到底该如何做呢?别急,SQL Server早就帮我们做好了,下面,跟我来。
首先,让我们来看一段话:
在生成包含小计和合计的报表时,ROLLUP 运算符很有用。ROLLUP 运算符生成的结果集类似于 CUBE 运算符所生成的结果集。
========================
CUBE 运算符生成的结果集是多维数据集。多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。
CUBE 运算符在 SELECT 语句的 GROUP BY 子句中指定。该语句的选择列表应包含维度列和聚合函数表达式。GROUP BY 应指定维度列和关键字 WITH CUBE。结果集将包含维度列中各值的所有可能组合,以及与这些维度值组合相匹配的基础行中的聚合值。
=========================
CUBE 和 ROLLUP 之间的区别在于:
CUBE 生成的结果集显示了所选列中值的所有组合的聚合。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合。
&n
相关文档:
The aspnet_Profile table contains the following fields: UserId, PropertyNames, PropertyValuesString, PropertyValuesBinary, and LastUpdatedDate. The PropertyNames field contains a string delimited with colons (:) that identify which profile fields are stored, what their datatype is and their of ......
首先创建测试表、添加数据。
create table #t(a int,b int,c int,d int,e int)
insert into #t values(1,2,3,4,5)
insert into #t values(1,2,3,4,6)
insert into #t values(1,2,3,4,7)
insert into #t values(1,2,3 ......
在存储过程中使用事务,以下为模板:
CREATE PROCEDURE testPro
AS
/**//* ------- 事务开始---------- */
BEGIN TRANSACTION tran_test
/**//* -------- 保存事务----------*/
SAVE TRANSACTION tran_test
/**//* -------- 数据操作---------*/
INSERT [table1] ( [content] ) VALUES ( '43332' )
/**//*---- ......