1.首先创建一个表 create table TE ( ID        VARCHAR2(2), T_CODE    VARCHAR2(4), T_NAME    VARCHAR2(4), T_AMOUNT  INTEGER, T_DEPT    VARCHAR2(4), T_PROJECT VARCHAR2(4), T_TYPE    VARCHAR2(1) ) 2.录入数据如下: insert into te (ID, T_CODE, T_NAME, T_AMOUNT, T_DEPT, …
转载自:https://blog.csdn.net/huang_xw/article/details/6402396 Oracle的group by除了基本用法以外,还有3种扩展用法,分别是rollup.cube.grouping sets. 1 rollup 假设有一个表test,有A.B.C.D.E5列. 如果使用group by rollup(A,B,C),首先会对(A.B.C)进行GROUP BY,然后对(A.B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GR…
今天遇到一个需求,gird表格数据如下:  部门  类型 数据   A  类型1  1  A  类型2  2  B  类型1  3  B  类型2  4   合计 10 实际需要显示的结果为:  部门  类型 数据   A  类型1  1  A  类型2  2    小计  B  类型1  3  B  类型2  4    小计  7   合计 10 上述需求一般有三种处理方式: 1.数据库直接生成分组数据.该方式从数据源头进行处理,好处是不需要在DW窗口做分组处理,不好还处是会在数据库中重复检索…
可以通过数据绑定来实现  通过union all 来实现数据库 SELECT * FROM v3_pay_list2 where ( (ought_date >= '2012-12-06') and (ought_date <'2013/9/16 0:00:00') and (corp_id = '0001')) union all select 'XXXXXXXXXX', corp_id,dep_id,dep_name,vendor_id,'','',  sum(amt),'','',ven…
[转自] http://blog.csdn.net/t0nsha/article/details/6538838 使用GROUP BY GROUPING SETS相当于把需要GROUP的集合用UNION ALL联合起来. 当GROUPING SETS里面的分组元素越多时,使用GROUPING SETS比使用UNION ALL性能更好,这可能和使用GROUPING SETS只需要访问一次表有关. 如下两段查询的结果是相等的: q1(GROUPING SETS): SELECT   departme…
1.oracle字符串分割函数split )定义split_type类型: CREATE OR REPLACE TYPE split_type IS TABLE OF VARCHAR2 (4000) )定义split函数: CREATE OR REPLACE FUNCTION split (     p_str IN VARCHAR2,     p_delimiter IN VARCHAR2 default(',') --分隔符,默认逗号 )     RETURN split_type IS  …
  1.出错处理 ORA-00911: invalid character. 这是因为在语句末尾加上了";"的缘故,去掉";"SQL就可以执行了~ (这与SQL Server不同)   Oracle:文字与格式字符串不匹配的解决 oracle的日期时间类型在往oracle的date类型插入数据的时候,记得要用to_date()方法. 如 insert into CUSLOGS(STARTTIME) values(to_date('2009-5-21 18:55:49…
1.时间转换 1.1 字符串转时间 今天需要写SQL语句更新数据库的时间,按照SQL Server的习惯写成 UPDATE TABLE A ’ WHERE ORDER_ID = ‘A12345678’ 结果提示语法错误 想了想,应该是我不知道的Oracle中的某种语法,于是查了下,果然是你.... 使用to_date函数即可 UPDATE TABLE A ,13:28:26’,'yyyy-mm-dd,hh24:mi:ss') WHERE ORDER_ID = ‘A12345678’ 1.2 时间…
1.Sequence 1.1 什么是Sequence? Sequence是oracle提供的一个对象,用于产生自增的主键.这与sql server的identity是类似的. 从数学的角度来说,其为一个等差数列,在1.2中看到这点. 1.2 详细语法 创建语法: CREATE SEQUENCE sequence //创建序列名称 [INCREMENT BY n] //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1 [START WITH n] //开始的值,递增默认是minva…
1.建表 CREATE TABLE item.ORDERS( ORDERID ) CONSTRAINT PK_ORDERS PRIMARY KEY, ORDERNO ), STOREID ), STOREOWNERID ), CUSTOMERID ), ORDERTYPE ), ORDERSTATUS ) ); 2.ID自增列设置 create sequence ITEM_ORDERS_SEQ minvalue -- 最小值=1 maxvalue -- 指定最大值 -- 或nomaxvalue…
1.查询oracle的连接数 select count(*) from v$session; 2.查询oracle的并发连接数 select count(*) from v$session where status='ACTIVE'; 3.查看不同用户的连接数 select username,count(username) from v$session where username is not null group by username; 4.查看所有用户: select * from al…
原文地址:http://blog.csdn.net/u014558001/article/details/42387929 本文主要讲解 ROLLUP, CUBE, GROUPING SETS的主要用法,这些函数可以理解为GroupBy分组函数封装后的精简用法,相当于多个union all 的组合显示效果,但是要比 多个union all的效率要高. 其实这些函数在时间的程序开发中应用的并不多,至少在我工作的多年时间中没用过几次,因为现在的各种开发工具/平台都自带了这些高级分组统计功能,使用的方…
版权声明:本文为博主原创文章,未经博主允许不得转载.本人观点或有不当之处,请在评论中及时指正,我会在第一时间内修改. https://blog.csdn.net/aiming66/article/details/80717802 在工作中遇到了这样的一个问题,就是需要将查询出来的数据进行分类汇总.这里用到了with rollup.下面是效果图.这里写图片描述 为了得到这样的效果,我们该如何做呢,我们来做这个小demo.数据库字样 这里写图片描述需求分析 本实例为demo,没有任何意义.仅仅是为了…
功能介绍: 自定义分组的字段 创建表: 插入测试数据: Grouping Sets(null,t.classid,(t.classid,t.studentname)),类似于ROLLUP Select t.classid,t.studentname,Sum(t.score) From Score t Group By Grouping Sets(null,t.classid,(t.classid,t.studentname)); 查询结果:…
干oracle 047文章12当问题,经验group by 声明.因此邂逅group by  rollup,decode,grouping,nvl,nvl2,nullif,RATIO_TO_REPORT等一下. 1. decode  与if...then,case...when...这类流数据语句功能差点儿相同 decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义例如以下: IF 条件=值1 THEN RETURN(值1) ELSIF 条件=值2 TH…
oracle group by中rollup和cube的区别: Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句.CUBE ROLLUP 是用于统计数据的. 实验使用SCOTT用户的EMP表测试 1.仅使用GROUP BY分组,GROUP BY后的单列可以用括号,也可以不用.以下两种写法作用一样: SCOTT@bys1>SELECT deptno, avg(sal) FROM emp  GROUP BY deptno; SCOTT@bys1>SELECT…
常常写SQL语句的人应该知道Group by语句的主要使用方法是进行分类汇总,以下是一种它最常见的使用方法(依据部门.职位分别统计业绩): SELECT a.dname,b.job,SUM(b.sal) sum_sal FROM dept a,emp b WHERE a.deptno = b.deptno GROUP BY a.dname,b.job; DNAME JOB SUM_SAL -------------- --------- ---------- SALES MANAGER 2850…
SELECT CASE WHEN GROUPING(F1) = 1 THEN '总计'WHEN GROUPING(F1) = 0 AND GROUPING(F2) = 1 THEN  F1+'合计'WHEN GROUPING(F1) = 0 AND GROUPING(F2) = 0 AND GROUPING(F3) = 1 THEN  F1+'的'+F2+'小计'ELSE F1        END AS F1 ,        CASE WHEN GROUPING(F3) = 1 THEN '…
分组集(Grouping Sets)是多个分组的并集,用于在一个查询中,按照不同的分组列对集合进行聚合运算,等价于对单个分组使用“union all”,计算多个结果集的并集.使用分组集的聚合查询,返回的select 子句相同,由于select子句只能引用分组列,因此,在单个分组中缺失的分组列,TSQL返回NULL值. TSQL使用 group by 子句分组,有4种不同的语法: group by a,b group by rollup(a,b) group by cube(a,b) group…
T-SQL 多个分组集共有三种 GROUPING SETS, CUBE, 以及ROLLUP, 其中 CUBE和ROLLUP可以当做是GROUPING SETS的简写版 示例数据库下载: http://files.cnblogs.com/files/haseo/TSQL2012.rar GROUPING SETS 列出所有你设置的分组集 SELECT shipperid, YEAR(shippeddate) AS shipyear, COUNT(*) AS numorders FROM Sales…
范例:cxmr540_g01 范例代码: ON EVERY ROW #add-point:rep.everyrow.before name="rep.everyrow.before" ####初始化 IF cl_null(g_i) THEN LET g_i= END IF IF cl_null(l_xjsl) THEN LET l_xjsl= END IF IF cl_null(l_xjmoney) THEN LET l_xjmoney= END IF LET g_i=g_i+ ###…
SQL合计汇总实现数据N+1条显示: 注意group by rollup((ename, job, empno))!!! select decode(grouping(ename) + grouping(job) + grouping(empno),               3,               '合计',               ename) ename,        decode(grouping(ename) + grouping(job) + grouping(em…
SELECT CASE WHEN GROUPING(F1) = 1 THEN '总计' WHEN GROUPING(F1) = 0 AND GROUPING(F2) = 1 THEN F1+'合计' WHEN GROUPING(F1) = 0 AND GROUPING(F2) = 0 AND GROUPING(F3) = 1 THEN F1+'的'+F2+'小计' ELSE F1 END AS F1 , CASE WHEN GROUPING(F3) = 1 THEN '' ELSE F2 END…
表结构: CREATE TABLE [dbo].[Students]( ,) NOT NULL, ) NULL, [Sex] [int] NOT NULL, ) NULL, ) NULL, , ) NOT NULL, ) NULL, CONSTRAINT [PK_Students] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,…
物料数量字段,根据物料类型的不同,来显示不同的小数位:要求有点苛刻: 首先,要能够总计和小计的话,这一列的字段类型必须是数值类型. 这样的话,就不能通过截取的方式改变不同行的小数位. 以下是两种思路: 1.使用edit_mask,即convert exit,在对应的function module中根据外部条件来判断应该显示多少位,然后使用截取的方法显示. 但是,外部条件不好获取,因为convert exit的fm只有输入输出两个参数,倒是可以再使用export/import传物料类型进来. 注意…
selectcase when (grouping(glbm)=1) then '合计' else DECODE(glbm,null,'',glbm) end glbm,case when (grouping(hpzl)=1) then '' else DECODE(hpzl,null,'',hpzl) end hpzl,case when (grouping(syxz)=1 and grouping(hpzl)=0) then '小计' else DECODE(syxz,null,'',syx…
Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup.cube.grouping sets.分别介绍例如以下: 1.rollup 对数据库表emp.如果当中两个字段名为a,b,c. 假设使用group by rollup(a,b),首先会对(a,b)进行group by ,然后对 a 进行 group by .最后对全表进行 group by 操作. 例如以下查询结果: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZX…
--建表 create table TEst1 ( ID ), co_CODE ), T_NAME ), Money INTEGER, P_code ) ); --插入基础数据 insert into TEST1 (ID, CO_CODE, T_NAME, MONEY, P_CODE) , 'YB01'); insert into TEST1 (ID, CO_CODE, T_NAME, MONEY, P_CODE) , 'YB01'); insert into TEST1 (ID, CO_COD…
select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200.wwv_flow_list_templates t)  where rw >= 5 1.rownum只能用<如果使用>加别名 2.子查询引用只能在查询出的结果中引用,比如子查询没有查出flow_id,外层不能用,另外外层不能引用内层的t 3.薪水前三名,内层查出薪水 order desc的虚表外层使用rownum<3 4.merge可以实现…
摘自 http://blog.itpub.net/26977915/viewspace-734114/ 在报表语句中经常要使用各种分组汇总,rollup和cube就是常用的分组汇总方式. 第一:group by rollup 1.如果使用诸如group by rollup(A,B,C)的方式分组,那么返回的分组结果是(A,B,C) (A,B) (A) (NULL) 一共四种结果.即从右到左递减,最后来个合计. 例如: SQL> select * from t; YEARS     MONTHS…