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的用法相关推荐

  1. SQL SERVER 中 GO 的用法2

    具体不废话了,请看下文详解. 1 2 3 4 5 6 7 8 9 10 use db_CSharp go  select *,  备注=case  when Grade>=90 then '成绩 ...

  2. SQL Server 中 RAISERROR 的用法 raiserror 是由单词 raise error 组成 raise 增加; 提高; 提升 raiserror 的作用: r

    SQL Server 中 RAISERROR 的用法 raiserror  是由单词 raise error 组成      raise  增加; 提高; 提升 raiserror 的作用: rais ...

  3. SQL Server中@@ROWCOUNT的用法

    转自:http://www.studyofnet.com/news/146.html 本文导读:@@ROWCOUNT返回上一语句受影响的行数!和@ERROR一样的特性,在每一条语句执行后都将被重置,如 ...

  4. SQL Server 中 GO 的用法

    本科里学了那么多年SQL Server一直看到书上各种SQL语句中间夹杂着那么几个看似毫无意义的GO,看着就让人莫名,问老师,老师一般只会告诉你,不要理他,这个东西没用的.但是个性纠结并且有轻微强迫症 ...

  5. SQL Server中row_number函数用法介绍

    一.SQL Server Row_number函数简介 ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数. 行号以每个分区中第一行的行号开头. 语法实例: ...

  6. SQL Server 中 RAISERROR 的用法

    raiserror  是由单词 raise error 组成      raise  增加; 提高; 提升 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sq ...

  7. Sql server中时间函数用法详解

    SQL中的时间函数非常有用,特别是在我们进行初始赋值.复杂查询的时候,就显得特别方便. 1.获得系统当前时间 select getdate()  2.DateName ( datepart , dat ...

  8. SQL Server 中@@IDENTITY的用法

    原文地址:http://www.studyofnet.com/news/145.html 本文导读:@@IDENTITY是返回上次插入的标识值,标识值一般指的是自动增长值.但是如果想只返回插入到当前作 ...

  9. 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 ...

最新文章

  1. 17、HTML单选按钮
  2. 智能窗帘研究制作_基于51单片机智能窗帘的研究与设计
  3. (三)HTTP再邂逅--熟悉HTTP协议结构和通讯原理
  4. 网络监控系统安装的4种方式,安防必备
  5. 网络安全设备常用默认弱口令
  6. Kotlin学习笔记 第二章 类与对象 第十节 内部类嵌套类
  7. vue过滤器的那点事
  8. mybatis中使用SqlSessionManager进行insert操作
  9. U8恢复记账操作步骤
  10. Hexo之next主题优化
  11. DSP TMS320F2803x 增强型捕获模块(eCAP)
  12. python 破解验证码之二:OCR tesseract识别验证码
  13. python语言发展历史
  14. Robocup3D项目搭建
  15. 微信小程序下拉触底卡顿
  16. 优步和滴滴激战中国市场
  17. .net程序员的iPhone开发-MonoTouch
  18. 数字连连看java实验报告,Java语言实现数字连连看源码
  19. 【软考系统架构设计师】2017下系统架构师案例分析历年真题
  20. Sqlserver2005日志文件太大,使其减小的方法

热门文章

  1. 不要一辈子靠技术生存
  2. 如何用纯 CSS 创作一个同心圆弧旋转 loader 特效
  3. 关于matlab向文件写入数据的方法——留着备用
  4. Android应用程序安全改进:回顾2016年
  5. 一文读懂卷积神经网络
  6. hibernate和struts2实现分页功能
  7. 【AJAX】DWR入门教程
  8. 将excel中是数据导入数据库
  9. Solidity语言
  10. 打开浏览器的包 node_如何发布可在浏览器和Node中使用的软件包