oracle数据库报表汇总函数grouping

前两天同事问一个oracle使用grouping完成一个统计报表的功能,这个函数帅呆了。开发分组报表直接一个SQL就搞定。

grouping(columnA)函数的意思:当前行如果是由rollup汇总产生的,那么columnA这个字段值为1否则为0

元数据:

通过grouping查询后的数据:

sql:

select decode(grouping(f_line)+grouping(f_workarea),1,'小计',2,'总计',f_workarea) f_workarea,
decode(grouping(f_line),1,count(*)||'条',f_line) f_line,
sum(f_pagesnumber) sum_pagesnumbers
from t_testcount
group by rollup (f_workarea,f_line);

建表数据:

CREATE TABLE t_testcount
   (
   "F_ID" NUMBER(10,0) ,
  "F_WORKAREA" NVARCHAR2(255) ,
  "F_LINE" NVARCHAR2(255) ,
  "F_REMARK" NVARCHAR2(255),
"F_YEAR" VARCHAR2(20 BYTE),
  "F_PAGESNUMBER" NVARCHAR2(255)
  );

insert into T_TESTCOUNT (f_id, f_workarea, f_line, f_remark, f_year, f_pagesnumber)
values (1, 'a', 'a1', null, '2014', '1');
insert into T_TESTCOUNT (f_id, f_workarea, f_line, f_remark, f_year, f_pagesnumber)
values (2, 'a', 'a2', null, '2013', '2');
insert into T_TESTCOUNT (f_id, f_workarea, f_line, f_remark, f_year, f_pagesnumber)
values (3, 'a', 'a3', null, '2014', '3');
insert into T_TESTCOUNT (f_id, f_workarea, f_line, f_remark, f_year, f_pagesnumber)
values (4, 'b', 'b1', null, '2014', '1');
时间: 2024-08-04 21:20:17

oracle数据库报表汇总函数grouping的相关文章

Oracle数据库获取uuid函数

Oracle新建系统表时,要求主键为32位uuid,猜测Oracle肯定会提供相关的函数. 翻阅相关文档,果然发现Oracle提供的函数 sys_guid() 用于获取32位uuid,简单使用为 select sys_guid() from dual; 该函数返回32位的uuid为大写,可以使用 lower(sys_guid()) 转为小写. Oracle数据库获取uuid函数

制作一个SSRS的ORACLE数据库报表,使用了时间类型的参数。

需求:我们这个报表是以月为单位,呈现的数据为查询为当前月的第一天到最后一天.条件类似于:time_day > 20140601 and  time_day < 20140630 因为是让用户选择月,所有呈现出来的时间参数应该是201406这种,写了一个时间的SQL,这个是连接ORACLE数据库的,并且只生成从201301到当前月的数据. ? 1 2 3 4 5 6 7 8 select * from (SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2013-01', '

Oracle数据库常用SQL函数

1.SQL函数的概念: 函数一般是在数据上执行的,它给数据的转换和处理提供了方便.只是将取出的数据进行处理,不会改变数据库中的值.(类似于java中的方法但函数只是将数据库中的数据取出(复制)到函数中进行运算,并不会修改数据库中的数据) 2.Sql函数可以分为组函数和单行函数. –单行函数对单个数值进行操作,并返回一个值–组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的having子句 3.单行函数的分类: 单行函数分为字符函数.数字函数.日期

Python中通过cx_oracle操作ORACLE数据库的封闭函数

哈哈,看来我的SQL自动化发布,马上就全面支持ORACLE,MYSQL,POSTGRESQL,MSSQL啦... http://blog.csdn.net/swiftshow/article/details/7383481 def Oracle_Exec(SqlStr): "Execute oracle command" conn = cx_Oracle.connect(DB_UserName, DB_UserPwd, DB_ConnectStr) cursor = conn.curs

Oracle数据库—— 存储过程与函数的创建

一.涉及内容 1.掌握存储过程与函数的概念. 2.能够熟练创建和调用存储过程与函数. 二.具体操作 1.创建存储过程,根据职工编号删除scott.emp表中的相关记录. (1)以scott 用户连接数据库,然后为system 用户授予delete 权限. 语句: connect scott/tiger; grant delete on emp to system; 截图: (2)以system 用户连接数据库,创建存储过程. 语句: connect system/orcl1234: create

Oracle数据库中的函数

1.随机数函数:DBMS_RANDOM.RANDOM 1 SELECT ABS(MOD(DBMS_RANDOM.RANDOM,100)) FROM DUAL; --产生一个100以内的随机数 2 SELECT TRUNC(100+900*dbms_random.value) FROM dual; --产生一个100-1000之间的随机数 3 SELECT dbms_random.value FROM dual; --产生一个0-1之间的随机数 4 SELECT dbms_random.value

ORACLE数据库常见问题汇总

提交事务的时候提示(数据库被一个用户锁住的解决方法) select object_id,session_id,locked_mode from v$locked_object; select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time; alter system kill sess

oracle数据库中decode函数的使用

语法 decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 函数含义 IF条件=值1THEN RETURN(返回值1) ELSIF条件=值2THEN RETURN(返回值2) ...... ELSIF条件=值nTHEN RETURN(返回值n) ELSE RETURN(缺省值) ENDIF 注意,后面的缺省值是可以不写的. select lb.contno, decode(cont.conttype, '1', cont.appntno, '2', cont.ins

Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐

风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入门:SQL语言DDL语句和对象管理,表/临时表/索引/约束/视图/同义词/序列/触发器/存储过程/包的创建管理:SQL语言DML语句,SQL语句INSERT/UPDATE/DELETE,PL/SQL创建,事务与锁:SQL语言Select查询语句,SQL查询限制排序,联接查询,SQL子查询:SQL语言