Oracle--listagg函数使用注意】的更多相关文章

Oracle大师Thomas Kyte在他的经典著作中,反复强调过一个实现需求方案选取顺序: “如果你可以使用一句SQL解决的需求,就使用一句SQL:如果不可以,就考虑PL/SQL是否可以:如果PL/SQL实现不了,就考虑Java存储过程是否可以:如果这些都不可能实现,那么就需要考虑你是否真的需要实现这个需求.” 各个关系型DBMS产品都在遵守关系型数据库模型的基本体系架构,遵循通用的SQL国际规范.同时,为了更好地配合自身数据库实现的特征,以及提供更加丰富的功能,各个DBMS纷纷在标准SQL上…
对于将一列多值合并成一行问题,oracle提供了wmsys.wm_concat和listagg函数处理此问题,下面我们以emp表中数据为例,看看两函数的使用方法 假设我们需要统计每种job下面有哪些员工,要求在一行显示员工姓名,首先看看emp表中的数据: ①利用listagg函数处理 ②利用wm_concat函数处理 wm_concat函数作用:除了处理多行合并问题,还给我们直接根据某个表的字段建立视图带来方便 ③注意分析函数中的partition by 与group by 的区别 下面我们看看…
今天需要将 BDST_ID相同的PROJECT_ID用逗号分隔拼成一个字符串,于是想到了oracle的listagg函数 表名为PM_BDST_PROJECT select tt.BDST_ID, listagg (tt.PROJECT_ID, ',') WITHIN GROUP (ORDER BY tt.PROJECT_ID) PROJECT_IDS FROM PM_BDST_PROJECT tt GROUP BY tt.BDST_ID 这样就大功告成了......…
方法一 wn_concat() 函数 1.把以下图中Name一样的数据合并为一条,而且NO的值要这样显示如 C.1,C.2 2.实现这种效果的操作如下,先把Name的值进行分组(group by),再把NO的值用 wm_concat()函数合并起来(注意:记得要to_char(),要不然数据显示不出来) 方法二 listagg() 函数 第一步和上面的一致 使用 listagg()函数 要把within group(order by s.no) 加上,它们是一体的…
==注:wm_concat(str1) 11g 后不支持使用== LISTAGG函数用法 select LISTAGG(name, ',') WITHIN GROUP (ORDER BY id) from tableName…
SELECT regexp_substr('公司1,贵公司2', '[^,]+', 1, LEVEL, 'i') FROM dualCONNECT BY LEVEL <= length('公司1,贵公司2') - length(REPLACE('公司1,贵公司2', ',', '')) + 1 以上为字符串带分隔符的转换为列 Oracle11.2新增了LISTAGG函数,可以用于字符串聚集,测试如下: 1,版本SQL> select * from v$version; BANNER------…
listagg 函数--oracle 11g release 2 转载:http://xpchild.blog.163.com/blog/static/10180985920108485721969/ 本文描述了在oracle 11g release 2 版本中新增的listagg函数,listagg是一个实现字符串聚合的oracle内建函数.作为一种普遍的技术,网络上也有多种实现字符串聚合的方法.本文会首先介绍listagg函数,最后会拿这些方法与listagg进行性能方面的对比. 样例数据…
http://www.cnblogs.com/chen1388/archive/2010/07/06/1771919.html decode函数: decode(aa, 1, 'xs', 2, 'ps', 'ms') 相当于 (case aa when 1 then 'xs' when 2 then 'ps' else 'ms' end) http://www.cnblogs.com/chen1388/archive/2010/07/06/1771930.html trunc函数,截断函数 fo…
--oracle常用函数积累-- --1.字符串长度:LENGTH ,语法: CONCAT(string) --示例 select LENGTH('AA_BB') from dual;--结果:5 --2.字符串连接:CONCAT,语法: CONCAT(string1,string2) --示例 select CONCAT('AA','_BB') from dual;--结果:AA_BB --简单点,用双竖线即可 select 'AA'||'''-'''||'BB' from dual;--结果…
oracle add_months函数 add_months 函数主要是对日期函数进行操作,举例子进行说明 add_months 有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为单位的) 如:3个月以后的时间,可以用下列语句 SQL) from dual; ADD_MONTHS(SYSDATE,) --------------------- 下午 :: 3个月以前的时间,可以用下列语句 SQL) from dual; ADD_MONTHS(SYSDATE,) -------…
Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Oracle数据库中,Oracle to_date()函数是我们经常使用的函数,下面就为您详细介绍Oracle to_date()函数的用法,希望可以对您有所启迪. to_date()与24小时制表示法及mm分钟的显示: 一.在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接…
Oracle over函数   SQL code: sql over的作用及用法RANK ( ) OVER ( [query_partition_clause] order_by_clause )DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,其中PARTITION BY 为分组字段,ORDER BY 指定排序字段over不能单独使用,要和分析函数:ran…
前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使用: 往emp表中插入一条记录: SQL,,,); ,,,) ORA: 文字与格式字符串不匹配--日期格式不对 使用to_date()函数搞定:格式to_date('1965-02-05','yyyy-mm-dd'); 2.Oracle中的字符函数: 字符函数是Oracle中最常用的函数, lowe…
Oracle将函数大致分为单行函数,聚合函数和分析函数. 单行函数分为字符函数,日期函数,转换函数,数字函数,通用函数,decode函数 一.字符函数 1)大小写控制函数 01.Lower() 全部小写 --字符函数 --小写 select Lower ( 'HAPPY') from dual; 效果: 02.Upper()  全部大写 --大写 select Upper ('happy') from dual; 效果: 03.initcap()  首字母大写 --首字母大写 select in…
Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-01-06 今天的日期为2013-01-062.select trunc(sysdate, 'mm') from dual --2013-01-01 返回当月第一天.3.select trunc(sysdate,'yy') from dual --2013-01-01 返回当年第一天4.select…
oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和存储过程的区别. 一.存储过程 1.定义 存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure. 2.创建存储过程 create [or replace] procedure 存储过程名 [(参数1 类型,参数2 out 类型……)] as…
关于处理小数点位数的几个oracle函数() 1. 取四舍五入的几位小数 select round(1.2345, 3) from dual; 结果:1.235 2. 保留两位小数,只舍 select trunc(1.2345, 2) from dual; 结果:1.23 select trunc(1.2399, 2) from dual; 结果:1.23 Oracle trunc()函数的用法日期1.select trunc(sysdate) from dual --2013-01-06 今天…
--Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual  --2011-3-18  今天的日期为2011-3-182.select trunc(sysdate, 'mm')   from   dual  --2011-3-1    返回当月第一天.3.select trunc(sysdate,'yy') from dual  --2011-1-1       返回当年…
Oracle to_char()函数的使用细则,学习连接 http://www.cnblogs.com/reborter/archive/2008/11/28/1343195.html…
如何使用 Oracle Round 函数 (四舍五入) 描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果. SELECT ROUND( number, [ decimal_places ] ) FROM DUAL 参数: number : 欲处理之数值 decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 ) Sample : select round(123.456, 0) from dual; 回传 123 select round(123.4…
(1)如何使用 Oracle Round 函数 (四舍五入)描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果.SELECT ROUND( number, [ decimal_places ] ) FROM DUAL参数:number : 欲处理之数值decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 )Sample :select round(123.456, 0) from dual; 回传 123 select round(123.456,…
两道SQL面试题引出listagg函数: 1. 用一条sql求出每个部门(emp表)的最大工资和最小工资,以及最大工资和最小工资的员工姓名. (注:一次表扫描.同一个部门最大工资或最小工资的人可能不止一个). 2. 需求:有时为了方便打印,会要求多行多列打印,如打印emp.ename列,类似下面这样显示: ALLEN  JONES  MARTIN  SMITH    WARD BLAKE  CLARK  KING    SCOTT  TURNER ADAMS FORD   JAMES     M…
ORACLE 日期函数 SYSDATE  当前的数据库系统时间 ADD_MONTHS(加减指定的月份) MONTHS_BETWEEN(取两个日期之间相隔的月数) LAST_DAY(取指定日期所在月的最后一天) 示例语句: 取当前数据库系统的时间 SELECT SYSDATE FROM DUAL; 以特定的时间格式显示 SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL; 更改当前会话(SESSION)的方式,来统一设置当前会话日期显…
Oracle正则表达式函数:regexp_like.regexp_substr.regexp_instr.regexp_replace   --去掉所有特殊字符,只剩字母  SELECT REGEXP_REPLACE('(Sam-Tomats123-=,.231+)','[^[:alpha:]]','') FROM dual;    Sql代码   Oracle使用正则表达式离不开这4个函数:      1.regexp_like      2.regexp_substr      3.rege…
Oracle日期函数用于对Oracle数据库中的日期及时间进行处理. (1)ADD_MONTHS Oracle日期函数返回一个具有与所提供日期相差月份的日期,函数中给出了未来或以前的月份数.语法如下: ADD_MONTHS(起始日期,增减月数),eg: select add_months('26-10月-12',2) from dual; select add_months('26-10月-12',-2) from dual; (2)LAST_DAY 返回包含给定日期的那个月的最后一天.语法为:…
原文 Oracle中函数/过程返回结果集的几种方式 Oracle中函数/过程返回结果集的几种方式:    以函数return为例,存储过程只需改为out参数即可,在oracle 10g测试通过.    (1) 返回游标:        return的类型为:SYS_REFCURSOR        之后在IS里面定义变量:curr SYS_REFCURSOR;        最后在函数体中写:         open cur for            select ......;     …
ORACLE时间函数(SYSDATE)深入理解 加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 select sysdate,to_char(sysdate+1,'yyyy…
加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from…
Oracle DECODE函数功能很强,下面就为您详细介绍Oracle DECODE函数的用法,希望可以让您对Oracle DECODE函数有更多的了解. Oracle DECODE函数 Oracle DECODE函数是Oracle公司独家提供的功能,它是一个功能很强的函数.它虽然不是SQL的标准,但对于性能非常有用.到目前,其他的数据库供应商还不能提供类似DECODE的功能,甚至有的数据库的供应商批评Oracle的SQL不标准.实际上,这种批评有些片面或不够水平.就象有些马车制造商抱怨亨利.福…
在ibatis和Mybatis对存储过程和函数函数的调用的配置Xml是不一样的,以下是针对Mybatis 3.2的环境进行操作的. 第一步配置Mapper的xml内容 <mapper namespace="com.rrtong.rrt.auto.dao.SelfStatisticDataDao"> <resultMap id="SelfStatisticData" type="SelfStatisticData"> <…