GROUP BY GROUPING SETS 示例
--
建表
create table TEst1
(
ID VARCHAR2(2),
co_CODE VARCHAR2(10),
T_NAME VARCHAR2(10),
Money INTEGER,
P_code VARCHAR2(10)
); --插入基础数据 insert into TEST1 (ID, CO_CODE, T_NAME, MONEY, P_CODE)
values ('', 'YB0101', '单位1', 50, 'YB01'); insert into TEST1 (ID, CO_CODE, T_NAME, MONEY, P_CODE)
values ('', 'YB0101', '单位1', 20, 'YB01'); insert into TEST1 (ID, CO_CODE, T_NAME, MONEY, P_CODE)
values ('', 'YB0101', '单位1', 30, 'YB01'); insert into TEST1 (ID, CO_CODE, T_NAME, MONEY, P_CODE)
values ('', 'YB0102', '单位2', 10, 'YB01'); insert into TEST1 (ID, CO_CODE, T_NAME, MONEY, P_CODE)
values ('', 'YB0102', '单位2', 20, 'YB01'); insert into TEST1 (ID, CO_CODE, T_NAME, MONEY, P_CODE)
values ('', 'YB01', '单位', 15, null); insert into TEST1 (ID, CO_CODE, T_NAME, MONEY, P_CODE)
values ('', 'YB01', '单位', 25, null); --------------------------
--测试 GROUP BY GROUPING SETS
SELECT *
FROM (SELECT ID, CO_CODE, T_NAME, MONEY, P_CODE, SM, SUM(SM) SSM
FROM (SELECT ID,
(CASE
WHEN CO_CODE IS NULL THEN
P_CODE
ELSE
CO_CODE
END) CO_CODE,
T_NAME,
MONEY,
P_CODE,
SM
FROM (SELECT ID,
CO_CODE,
T_NAME,
MONEY,
P_CODE,
SUM(MONEY) SM
FROM TEST1
GROUP BY GROUPING SETS((ID, CO_CODE, T_NAME, MONEY, P_CODE),(P_CODE)))
WHERE (P_CODE IS NOT NULL OR CO_CODE IS NOT NULL))
GROUP BY GROUPING SETS((CO_CODE, ID, T_NAME, MONEY, P_CODE, SM), CO_CODE)
ORDER BY CO_CODE, ID NULLS FIRST)
WHERE (P_CODE IS NULL OR
(CO_CODE IS NOT NULL AND P_CODE IS NOT NULL AND CO_CODE <> P_CODE)) ------------------------
原始表:

处理之后结果:

GROUP BY GROUPING SETS 示例的更多相关文章
- Group By Grouping Sets
Group by分组函数的自定义,与group by配合使用可更加灵活的对结果集进行分组,Grouping sets会对各个层级进行汇总,然后将各个层级的汇总值union all在一起,但却比单纯的g ...
- Oracle PL/SQL之GROUP BY GROUPING SETS
[转自] http://blog.csdn.net/t0nsha/article/details/6538838 使用GROUP BY GROUPING SETS相当于把需要GROUP的集合用UNIO ...
- group by <grouping sets(...) ><cube(...)>
GROUP BY GROUPING SETS() 后面将还会写学习 with cube, with rollup,以及将它们转换为标准的GROUP BY的子句GROUP SET(), CU ...
- SQL GROUP BY GROUPING SETS,ROLLUP,CUBE(需求举例)
实现按照不同级别分组统计 关于GROUP BY 中的GROUPING SETS,ROLLUP,CUBE 从需求的角度理解会更加容易些. 需求举例: 假如一所学校只有两个系, 每个系有两个专业, 每个专 ...
- (4.6)sql2008中的group by grouping sets
最近遇到一个情况,需要在内网系统中出一个统计报表.需要根据不同条件使用多个group by语句.需要将所有聚合的数据进行UNION操作来完成不同维度的统计查看. 直到发现在SQL SERVER 200 ...
- GROUP BY中ROLLUP/CUBE/GROUPING/GROUPING SETS使用示例
oracle group by中rollup和cube的区别: Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句.CUBE ROLLUP 是用于统计数据的. 实验 ...
- Group By 多个分组集小结 --GROUPING SETS,GROUP BY CUBE,GROUP BY ROLLUP,GROUPING(),GROUPING_ID()
T-SQL 多个分组集共有三种 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以当做是GROUPING SETS的简写版 示例数据库下载: http:// ...
- SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE
1.创建表 Staff CREATE TABLE [dbo].[Staff]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Money] [int] NULL, [Cr ...
- [Oracle] Group By 语句的扩展 - Rollup、Cube和Grouping Sets
常常写SQL语句的人应该知道Group by语句的主要使用方法是进行分类汇总,以下是一种它最常见的使用方法(依据部门.职位分别统计业绩): SELECT a.dname,b.job,SUM(b.sal ...
随机推荐
- python操作JIRA的库简单操作
因公司需要,我们开发的PRISM又需要和JIRA对接啦, 今天找了一个JIRA库撸了一发~~~ jira库地址: https://pypi.python.org/pypi/jira/1.0.3 简单操 ...
- [Angular] Introduce to NGXS
Went though tow youtube videos about NGXS https://angularfirebase.com/lessons/ngxs-quick-start-angul ...
- Java异常的处理机制(二)
1.throw的作用 class Usre { private int age; public void setAge (int age) { if(age < 0) { RuntimeExce ...
- S 禁止F12和右键操作控制台,兼容各浏览器
document.oncontextmenu = function () { return false; }; document.onkeydown = function () { ...
- zjnu 1181 石子合并(区间DP)
Description 在操场上沿一直线排列着 n堆石子. 现要将石子有次序地合并成一堆.规定每次仅仅能选相邻的两堆石子合并成新的一堆, 并将新的一堆石子数记为该次合并的得分.同意在第一次合并前对调一 ...
- Adding a view
在添加View之前,之前的页面是下面这个样子,需要注意的是浏览器标题,以及浏览器的内容 https://docs.asp.net/en/latest/tutorials/first-mvc-app/a ...
- Maven与IDEA结合
转自:https://blog.csdn.net/zzpzheng/article/details/49474671 1. 什么是 Maven,为什么要使用 Maven 而不是 Ant Maven简单 ...
- day63-webservice 07.07.如何修改cxf配置文件路径
为什么第一次访问http://localhost:8080/cxf-web-server/service有点慢?证明第一次访问的时候CXFServlet被初始化了被加载了.一般是让CXFServlet ...
- [jzoj 6073] 河 解题报告 (DP)
interlinkage: https://jzoj.net/senior/#main/show/6073 description: solution: 考虑一条河$x$被染的效果 显然对于一条河$i ...
- kubernetes系列(小知识):kubectl命令自动补全
kubectl命令自动补全 linux系统 yum install -y bash-completion source /usr/share/bash-completion/completions/d ...