精华内容
下载资源
问答
  • select dept.dname,wm_concat(emp.ename) from dept,emp where dept.deptno=emp.deptno group by dept.dname
    select dept.dname,wm_concat(emp.ename)
    from dept,emp
    where dept.deptno=emp.deptno
    group by dept.dname
    展开全文
  • oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle wm_concat(column)函数实现字段合并,如果您对oracle wm_concat(column)函数使用方面感兴趣的话,不妨一看。shopping:——————...
  • oracle多行合并成一行 使用vm_concat() 函数 ----------------------------------------- u_id goods num ------------------------------------------ 1 苹果 2 2 ...

    oracle多行合并成一行

    使用vm_concat() 函数

    -----------------------------------------
    u_id             goods            num
    ------------------------------------------
    1                苹果               2
    2                梨子               5
    1                西瓜               4
    3                葡萄               1
    3                香蕉               1
    1                橘子               3
    
    --查询语句
    select u_id, wmsys.wm_concat(goods) goods_merge, wm_concat(goods) goods_mg
    from shopping   
    group by u_id  
    

    结果

    --------------------------------
    u_id           goods_merge  
    --------------------------------
    1              苹果,西瓜,橘子
    2              梨子
    3              葡萄,香蕉
    ---------------------------------
    

    select u_id, 
    wmsys.wm_concat(goods || '(' || num || '斤)' ) goods_sum   
    from shopping   
    group by u_id
    
    --------------------------------
    u_id           goods_sum
    --------------------------------
    1              苹果(2斤),西瓜(4斤),橘子(3斤)
    2              梨子(5斤)
    3              葡萄(1斤),香蕉(1斤)
    ---------------------------------
    

    listagg()函数

    基本语法:listagg(xxx,xxx) within group( order by xxx)
    可以配合 group by进行聚合查询,也可以配合 partition by进行聚合查询。

    TEST_USER 表记录如下
    在这里插入图片描述
    TEST_RECORD 表记录如下:
    在这里插入图片描述

    使用group by

    SELECT u.ID, u.NAME, LISTAGG(r.VALUE, ',') WITHIN GROUP (ORDER BY r.VALUE) AS AGG_VALUES
    FROM TEST_USER u 
    LEFT JOIN TEST_RECORD r ON u.ID = r.ID
    WHERE r.TAG IN ('start', 'end')
    GROUP BY u.ID, u.NAME;
    

    在这里插入图片描述

    使用PARTITION BY

    SELECT DISTINCT u.ID, u.NAME, LISTAGG(r.VALUE, ',') WITHIN GROUP (ORDER BY r.VALUE) OVER (PARTITION BY U.ID) AS AGG_VALUES
    FROM TEST_USER u 
    LEFT JOIN TEST_RECORD r ON u.ID = r.ID
    WHERE r.TAG IN ('start', 'end');
    

    在这里插入图片描述

    两者相似之处

    • 都能实现聚合查询同样的结果
    • 都需要 ORDER BYLISTAGG的对象进行排序。
    • WITHIN GROUP可以对聚合后的单元内 (如上例中的 1,3) 元素进行排序, ORDER BY的字段任意,并不仅限于要进行聚合操作的字段。
    展开全文
  • oracle列合并成行的函数 wn_concat()

    千次阅读 2018-02-24 17:00:59
    wn_concat() 在oracle 10g 中返回的是string类型  在oracle 11g 中返回的是clob类型


      注意:wn_concat() 在oracle 10g 中返回的是string类型

                                           在oracle 11g 中返回的是clob类型

      在oracle 10g里面执行,结果如图1


                                                                                            图1

    在oracle11g里面执行,结果如下图2:


                                                                                             图2


    展开全文
  • 当我们刚开始学Oracle时,见到group by,常常会来个三连问:为什么要用group by?group by应该怎么用?为什么写了group by运行时会提示“不是单组分组函数;不符合group by语法”?面对这些问题,我都胆战心惊了...
  • select WMSYS.WM_CONCAT(contractid) from fin_cbs_manager select contractid from fin_cbs_manager
  • 1.合并函数wm_concat(column) wm_concat(列名),该函数可以把值以“,”号分隔起来,并显示成一行。如果值是中文的,则选择另一种方式: wm_concat(to_char(列名)) 例如下面例子: 执行下面SQL:select id,wm...

     

    1.合并函数 wm_concat(column)
    wm_concat(列名),该函数可以把列值以“,”号分隔起来,并显示成一行。如果列值是中文的,则选择另一种方式: wm_concat(to_char(列名))

    例如下面例子:

    执行下面SQL:select id,wm_concat(to_char(name)) name from testTable group by id; 可得到下面结果

    2.替换函数 replace(原字段,“原字段旧内容“,“原字段新内容“,)

     执行下面SQL:select id,name,replace(num,'10','5') num0 from testTable ;  可得到下面结果

    3.拼接字符串函数concat(字串1, 字串2

    对于字符串拼接,每一种资料库都有戏相应方法-----MySQL: CONCAT()      Oracle: CONCAT(), ||      SQL Server: +

    CONCAT() 的语法如下:CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。但是,Oracle的CONCAT()只允许两个参数,如要拼接多个参数则嵌套使用concat可实现,或者可以使用“||”来拼接 !!!

    执行下面SQL:1)select name || '(' || num || '斤)' as str from testTable ; 

                          2)select concat(name, '(' || num || '斤)') as str from testTable ;可得到下面结果

    4.截取字符串函数substr(字符串,截取开始位置,截取长度)

     执行下面SQL:  select substr(name,0,1) str from testTable; 可得到下面结果

    5.查找函数INSTR(string,subString,position,ocurrence)查找字符串位置

    该函数可以用于模糊查询以及判断包含关系:

    例如:1) select id,name ,num from testTable where instr(name,'香蕉')>0;

    等同于  select id,name ,num from testTable where name like '%香蕉%';

              2)  select id,name ,num from testTable where instr('123,香蕉',name)>0;

    等同于  select id,name ,num from testTable where name in ('123,香蕉');

    展开全文
  • oracle11g以后不要使用wmsys.wm_concat,改用LISTAGG 函数,用于多行合并为一行,执行效率更优调整前: select q.EUTRANCELLTDD_UK, q.CellReselPriority, q.QrxLevMinReCh, q.ThreshXHigh + r.qRxLevMin as T...
  • 之前在项目中使用过,但是没有理解透彻每次使用的时候都...现在我需要将相同的品牌类型合并成一行,并用‘,’隔开,sql如下:   select ltrim(sys_connect_by_path(dc_type, ','), ',')--封装想要的格式 dc_t...
  • 今天在做一个跑批任务中,需要在oracle函数里把多行数据合并成一行,顺道发挥下常用的几种方法。 一、wm_concat wm_concat函数是是oracle中常用的函数,功能:行转,可以将查询出的多行某值使用逗号进行隔开...
  • 表查询: 合并查询:使用union关键字,可将满足条件的重复行去掉。 代码如下: select ename,sal,job from emp where sal > 2500 union select ename,sal,job from emp where job = ‘MANAGER’; 而union all用法和...
  • Oracle应用之merge合并更新函数

    千次阅读 2019-02-23 23:27:19
    本博客介绍一下Oracle merge合并函数,业务场景:新增数据的时候要先查询数据库是否已经有改数据,有数据就更新数据,没数据才新增数据,这是很常见的业务场景,如果是用Oracle数据库的话,其实直接用merge函数效率...
  • HH 终风且暴,顾我则笑,谑浪笑敖,中心是悼。 终风且霾,惠然肯来,莫往莫来,悠悠我思。 博客园 首页 ...Oracle行转转行的Sql语句总结 多行转字符串 这个比较简单,用||或concat函数...
  • 前言 MERGE语句是Oracle9i...本博客介绍一下Oracle merge合并函数,业务场景:新增数据的时候要先查询数据库是否已经有改数据,有数据就更新数据,没数据才新增数据,这是很常见的业务场景,如果是用Oracle数据库的话
  • 很多场合我们都会用到oracle列合并oracle提供了如下一些方法用来实现列合并: 一、Oracle 10G以前使用WMSYS.WM_CONCAT: wmsys.wm_concat将字段的值用”,”来隔开。 select id,wm_concat(name) from tab_name ...
  • oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合并,如果您对oracle wm_concat(column)函数使用方面感兴趣的话,不妨一看。 shopping: --------...
  • 我们目前有表A和表B,两个表分别有一,我们想查询出来的结果如表C,它同时包含了表A和表B的; 二.解决方案 为了测试方便,我们直接使用Oracle数据库的scott用户下的表emp和表dept; 表emp: select rownum as rn1, t.*...
  • oracle合并列函数wm_concat

    千次阅读 2017-09-29 17:15:49
    诉求:查询Oracle数据库N个表,将查询结果的一转化为一条数据,需要函数WM_CONCAT: SELECT REPLACE(WM_CONCAT(E.CARD), ',', '|') FROM BB_USER_T E;
  • oracle10g,9i多行合并一行函数
  • 数据查询如图: 行转第一种方式 SUM+DECODE函数: SELECT NAME AS 姓名, SUM(DECODE(SUBJECT,‘语文’,GRADE,0)) as 语文, SUM(DECODE(SUBJECT,‘数学’,GRADE,0)) as 数学, SUM(DECODE(SUBJECT,‘英语’,GRADE,0...
  • 什么是合并多行字符串(连接字符串)呢,例如: SQL> desc test; Name Type Nullable Default Comments ——- ———— ——– ——- ——– COUNTRY VARCHAR2(20) Y CITY VARCHAR2(20) Y SQL> select * from test; ...
  • 注:wm_concat(str1) 11g 后不支持使用 LISTAGG函数用法 select LISTAGG(name, ',') WITHIN GROUP (ORDER BY id) from tableName 记录每天发现的问题,同行如有宝贵意见请不吝赐教。 ...
  • oracle 将多数据合并成一显示

    万次阅读 2017-06-29 09:53:43
    oracle数据显示成一 ,2数据合并在一起显示
  • oracle自定义日期函数

    2014-05-06 14:44:28
    oracle自定义日期函数、你值得拥有!
  • 一、合并字段 原理:利用wm_concat函数、group by 分组函数完成 1、建立测试表 create table test_concat ( ID VARCHAR2(10), NAME VARCHAR2(20), TYPE VARCHAR2(10) )   2、初始化测试数据 ID NAME ...
  • Oracle合并某一

    2017-11-09 08:43:00
    本文转载自:... 一.oracle11g使用listagg() within group()函数  如图一 二 使用:select sname,ListAgg(to_char(hobby),',') within group (order by sname) as xhobby fr...
  • SQL/Oracle 将一多行合并为一行

    万次阅读 2015-01-10 09:28:52
    1.SQL 参照:http://www.cnblogs.com/smalleyes/archive/2012/03/08/2385658.html 方法一:用户自定义函数 CREATE FUNCTION FN_Merge (@Student NVARCHAR(50)) RETURNS NVARCHAR(50) AS BEGIN DECLARE @C

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,688
精华内容 16,275
关键字:

oracle+函数+合并列