SQL SERVER中ROLLUP的用法
cube操作符
要使用cube,首先要了解group by
其实cube和rollup区别不太大,只是在基于group by 子句创建和汇总分组的可能的组合上有一定差别,
cube将返回的更多的可能组合。如果在 group by 子句中有n个列或者是有n个表达式的话,
sqlserver在结果集上会返回2的n-1次幂个可能组合。
注意:
使用cube操作符时,最多可以有10个分组表达式
在cube中不能使用all关键字
GROUPING
是一个聚合函数,它产生一个附加的列,当用 CUBE 或 ROLLUP 运算符添加行时,附加的列输出值为1,当所添加的行不是由 CUBE 或 ROLLUP 产生时,附加列值为0。
仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相联系的选择列表中才允许分组。
语法
GROUPING ( column_name )
参数
column_name
是 GROUP BY 子句中用于检查 CUBE 或 ROLLUP 空值的列。
返回类型
int
示例:
select ACCNT_CODE,LEFT(PERIOD,4),SUM(AMOUNT) from TES_A_SALFLDG
WHERE ACCNT_CODE LIKE '160409%'
GROUP BY ACCNT_CODE,LEFT(PERIOD,4) with rollup
加Grouping示例:
select ACCNT_CODE,PERIOD,JRNAL_NO,SUM(AMOUNT) from TES_A_SALFLDG
WHERE ACCNT_CODE LIKE '160409%'
GROUP BY ACCNT_CODE,PERIOD,JRNAL_NO with rollup
HAVING GROUPING(ACCNT_CODE)=0
AND GROUPING(PERIOD)+GROUPING(JRNAL_NO) IN (0,2)
转载于:https://blog.51cto.com/avenwuss/1066654
SQL SERVER中ROLLUP的用法相关推荐
- SQL SERVER 中 GO 的用法2
具体不废话了,请看下文详解. 1 2 3 4 5 6 7 8 9 10 use db_CSharp go select *, 备注=case when Grade>=90 then '成绩 ...
- SQL Server 中 RAISERROR 的用法 raiserror 是由单词 raise error 组成 raise 增加; 提高; 提升 raiserror 的作用: r
SQL Server 中 RAISERROR 的用法 raiserror 是由单词 raise error 组成 raise 增加; 提高; 提升 raiserror 的作用: rais ...
- SQL Server中@@ROWCOUNT的用法
转自:http://www.studyofnet.com/news/146.html 本文导读:@@ROWCOUNT返回上一语句受影响的行数!和@ERROR一样的特性,在每一条语句执行后都将被重置,如 ...
- SQL Server 中 GO 的用法
本科里学了那么多年SQL Server一直看到书上各种SQL语句中间夹杂着那么几个看似毫无意义的GO,看着就让人莫名,问老师,老师一般只会告诉你,不要理他,这个东西没用的.但是个性纠结并且有轻微强迫症 ...
- SQL Server中row_number函数用法介绍
一.SQL Server Row_number函数简介 ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数. 行号以每个分区中第一行的行号开头. 语法实例: ...
- SQL Server 中 RAISERROR 的用法
raiserror 是由单词 raise error 组成 raise 增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sq ...
- Sql server中时间函数用法详解
SQL中的时间函数非常有用,特别是在我们进行初始赋值.复杂查询的时候,就显得特别方便. 1.获得系统当前时间 select getdate() 2.DateName ( datepart , dat ...
- SQL Server 中@@IDENTITY的用法
原文地址:http://www.studyofnet.com/news/145.html 本文导读:@@IDENTITY是返回上次插入的标识值,标识值一般指的是自动增长值.但是如果想只返回插入到当前作 ...
- SQL Server中Rollup关键字使用技巧 (转)
首先创建测试表.添加数据. create table #t(a int,b int,c int,d int,e int) insert into #t values(1,2,3,4,5) insert ...
最新文章
- 17、HTML单选按钮
- 智能窗帘研究制作_基于51单片机智能窗帘的研究与设计
- (三)HTTP再邂逅--熟悉HTTP协议结构和通讯原理
- 网络监控系统安装的4种方式,安防必备
- 网络安全设备常用默认弱口令
- Kotlin学习笔记 第二章 类与对象 第十节 内部类嵌套类
- vue过滤器的那点事
- mybatis中使用SqlSessionManager进行insert操作
- U8恢复记账操作步骤
- Hexo之next主题优化
- DSP TMS320F2803x 增强型捕获模块(eCAP)
- python 破解验证码之二:OCR tesseract识别验证码
- python语言发展历史
- Robocup3D项目搭建
- 微信小程序下拉触底卡顿
- 优步和滴滴激战中国市场
- .net程序员的iPhone开发-MonoTouch
- 数字连连看java实验报告,Java语言实现数字连连看源码
- 【软考系统架构设计师】2017下系统架构师案例分析历年真题
- Sqlserver2005日志文件太大,使其减小的方法