干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…
DECODE() decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) From talbename Where … 其中columnname为要选择的table中所定义的column, ·含义解释: decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)的理解如下: if (条件==值1) th…
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简单介绍一下几个函数的用法. 在介绍这个之前你必须明白什么是oracle中的空值null 1.NVL函数 NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值. 例如: SQL> sel…
1.ROW_NUMBER() OVER函数的基本用法用法 http://www.cnblogs.com/fxgachiever/archive/2010/09/15/1826792.html 2.DeCode函数: http://www.cnblogs.com/juddhu/archive/2012/03/07/2383101.html 3.GROUP BY ROLLUP http://hi.baidu.com/420350501/item/a01fdf3ed3a5bb82f4e4ad44 ht…
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…
首先我们创建一个示例表: Create table test_group (v_name varchar2(4) ,v_size varchar2(4) ,v_color varchar2(4) ,n_num number(4) ); --插入数据 insert into test_group select '桌子','大','红',10 from dual union all select '桌子','大','绿',10 from dual union all select '桌子','小',…
SQL Fundamentals || Oracle SQL语言 SQL Fundamentals: Using Single-Row Functions to Customize Output使用单行函数自定义输出 SQL Fundamentals || Single-Row Functions || 字符函数 character functions SQL Fundamentals || Single-Row Functions || 数字函数number functions SQL Fun…
首先注意空(null)值,空值加任何值都是空值,空值乘任何值也都是空值,依此类推. 1.NVL函数 NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值. eg: select NVL(null,'ok') from dual --the result is 'ok' select NVL('something','ok') from dual --the result is 's…
Oracle 通用函数 ① NVL 函数--------将空值转换成一个已知的值: 可以使用的数据类型有日期.字符.数字. 函数的一般形式:   NVL(commission_pct,0)            NVL(hire_date,'01-JAN-97') NVL(job_id,'No Job Yet') (注意select 原数据类型是number  对返回值要求也是number  其他同理)? 求年薪 select employee_id, nvl(commission_pct,)…
nvl函数 语法: NVL(表达式1, 表达式2) select nvl(s.name, '未填写') from student s 如果表达式1的值为空, 则显示第二个值, 否则显示原来的值, nvl2函数 语法: NVL2(表达式1, 表达式2, 表达式3) select nvl(s.name, 'a', 'b') from student s 如果表达式1的值不为空, 显示表达式2, 为空的话显示表达式3 这两个函数还有一个重大的区别, NVL函数中表达式1和表达式2的值必须为同一类型,…
select 1 from PMADW.GET_WX_DATAPUSH_NEW_CHECK A INNER JOIN PMADW.V_EXCEPTION_QTY_MAIN B on DECODE( A.VALUE_NAME,B.V_QTY_CODE,1,B.PARENTID,1,0) = 1 and A.DAY_ID = B.DAY_ID AND B.N_GRANULARITY = 1 where A.DAY_ID = TO_DATE('{$yest}','yyyy-mm-dd') and A.…
http://jingyan.baidu.com/article/fa4125acaf898e28ac7092b9.html…
NVL 语法:NVL( expr1, expr2) 功能:如果expr1为NULL,则NVL函数返回expr2的值,否则返回expr1的值,如果两个参数的都为NULL ,则返回NULL. 注意事项:expr1和expr2必须为同一数据类型,除非显式的使用TO_CHAR函数进行类型转换. SQL,null) from dual; NVL(,NULL) ----------- SQL) from dual; NVL() ----------- SQL,) from dual; NVL(,) ----…
NVL: Converts a null value to an actual valueNVL2:If expr1 is not null, NVL2 returns expr2. If expr1 is null, NVL2 returns expr3. The argument expr1 can have any data type.NULLIF:Compares two expressions and returns null if they are equal; returns th…
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简单介绍一下几个函数的用法. 在介绍这个之前你必须明白什么是oracle中的空值null 1.NVL函数 NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值. 例如: SQL> sel…
oracle sql常用查询nvl,nvl2,decode区别及使用方法 1,NVL( E1, E2) 如果E1为NULL,则NVL函数返回E2的值,否则返回E1的值,如果两个参数都为NULL ,则返回NULL. ) , ) select nvl(null, null) from dual; --null 2,nvl2 (E1, E2, E3) 的功能为:如果E1为NULL,则函数返回E3,否则返回E2 , ) ,3,decode(E1, E2, E3, E4, E5, E6 ) 如果E1==E…
常常写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…
oracle group by中rollup和cube的区别:  Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句. 如果是ROLLUP(A, B, C)的话,先会对(A.B.C)进行GROUP BY,然后对(A.B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作: 如果是GROUP BY CUBE(A, B, C),则首先会对(A.B.C)进行GROUP BY,然后依次是(A.B),(A.C),(A),(B.C)…
本文通过例子展示sum, rollup, cube, grouping的用法. //首先建score表 create table score( class  nvarchar2(20), course   nvarchar2(20), stu_no  number(5), stu_name nvarchar2(20), score   number(2)); //插入数据 insert into score values ('Class_A','Math',10001,'Tough1',95);…
group by rollup() 按分组合计 select grouping(status),status,owner,object_type,count(*) from dba_objects where owner not in ('SYS','SYSTEM') group by rollup (status,owner,object_type) order by status,owner,object_type; 经典分类查询语句: select object_type,count(*)…
GO alter proc [zsp_BranchsData] as begin /* CREATE TABLE [原始机构数据] ( [序号] [varchar](50) NULL, [一级分行号] [varchar](50) NULL, [一级分行名称] [varchar](50) NULL, [二级分行号] [varchar](50) NULL, [二级分行名称] [varchar](50) NULL, --[上级机构号] [varchar](50) NULL, --[上级机构名称] [v…
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…
GROUP_ID 首先我们看看官方的解释: 大意是GROUP_ID用于区分相同分组标准的分组统计结果. 解释起来比较抽象,下面我们来看看具体的案例. 例1:单一分组 SQL> select group_id(),deptno,sum(sal) from emp group by rollup(deptno); GROUP_ID() DEPTNO SUM(SAL) ---------- ---------- ---------- rollup(deptno)只是一个唯一的分组,所以产生的group…
1.group by语句在oracle中没有排序功能,必须依靠order by才能实现按照预定结果的排序 2.group by 的cube扩展 with test as ( id, name from dual ) select id,name from test group by cube(id,name); 输出结果为 id name null null null 由此不难看出group by cube的作用是把null引入做一个笛卡尔积,最终显示出来,在有些情况下用起来非常的方便,在某些情…
ROLLUP和CUBE 用法           Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句. 如果是Group by  ROLLUP(A, B, C)的话,首先会对(A.B.C)进行GROUP BY,然后对(A.B)进行GROUP BY,然后是(A)进行GROUP BY,最后对全表进行GROUP BY操作. 如果是GROUP BY CUBE(A, B, C),则首先会对(A.B.C)进行GROUP BY,然后依次是(A.B),(A.C),(A),(B…
本文主要介绍,报表在使用group by rollup和group by cube后的辅助函数. CREATE TABLE TEST8 ( "ID" NUMBER, "ORDERID" NUMBER, "PRODUCTID" NUMBER, "PRICE" ,), "QUANTITY" NUMBER ) , , , , ); , , , , ); , , , , ); , , , , ); , , , ,…
前言.看了很多的随笔博文内容都是关于rollup和cube的用法,发现一个问题,很多都是一样或者转载的,但这都不是重点,重点是,他们写的都太专业化了,直接给一个结论,并没有给出整个推理出这个结论的过程,个人感觉不太适合新手学习并使用这两个函数,下面我这篇随笔个人觉得比较适合新手学习和使用rollup和cube,里面没有什么"纬度"之类的关键字.下面开始!!!!! 一.group by  rollup函数解析 1.对于数据的汇总,是数据库经常用到的任务之一,本文讲的就是其中的一种roll…
Oracle中INSTR.SUBSTR和NVL的用法 INSTR用法:INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) 返回找到的位置,如果找不到则返回0. 默认查找顺序为从左到右.当起始位置为负数的时候,从右边开始查找.若起始位置为0,返回值为0. 复制代码 SELECT INSTR('CORPORATE FLOOR', 'OR', 0, 1) FROM DUAL; 返回值为0 SELECT INSTR('CORPORATE FLOOR', 'OR', 2…
Rollup与group by组合使用,可对分组结果进行进一步的汇总. 创建数据表 select * from emp_test (1) rollup单个字段 如按照country字段进行分组,并在最后追加一条汇总所有country的值 ) from emp_test group by rollup (COUNTRY) (2) rollup多个字段 按照gender,country字段进行分组,并针对每一个country追加一条汇总值,并在最后追加一条所有country汇总 ) from emp…
oracle的order by decode根据文字自定义排序的例子: order by decode(t.title, '当前生效预警', 1, '今日即将生效', 2, '明日预计生效', 3, '本月累计发布', 4, '本月累计完成(含延续)', 5, '年度累计发布', 6, '年度累计完成(含延续)', 7, 0) ; 这样文字就会按照0.1.2.3对应的顺序排序了:…