`
peonyzzdx
  • 浏览: 589683 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

listagg

 
阅读更多
wm_concat和listagg都可以把列拼接成行,11g下wm_concat没有自带的排序功能,弱爆了,要么在内层排序增加开销,要么用over(partition by b order by a) 产生一堆废数据,listagg方便多了,用法:
a    |    b
-----------
A    |    1
B    |    2
C    |    3
select listagg(a,',') within group (order by b) ,listagg(b,',') within group (order by b)
from xxx --其中','可替换成其他字符
---------------------
A,B,C   |   1,2,3





sql.append("select distinct(a.fwzl),lx.id,a.fwcode, a.fwid, c.qlid, c.qlrmc,c.syqzsh,a.fwdh,a.jzmj");
        sql.append(" from " + SCHEMA.FWDJ + ".Tpf_Jcdjb a, (select listagg(r.qlrmc ,',') within group (order by r.qlrmc)  as qlrmc,");
        sql.append("listagg( b.syqzsh ,',') within group (order by r.qlrmc) as syqzsh,b.fwcode,b.qlid from " + SCHEMA.FWDJ + ".tpf_syqdjb b, " + SCHEMA.FWDJ + ".tpf_qlr r");
        sql.append(" where r.ywslid = b.ywslid and r.id = b.qlrid  and r.sfls = 0  and b.sfls = 0 and b.fwcode is not null ");

        sql.append(" group by b.fwcode, b.qlid) c," + SCHEMA.LSJZBH + ".tpkr_lsjzfwcqgx lx  where c.fwcode = a.fwcode and  a.fwcode =lx.fwcode and lx.fwcode=c.fwcode and a.sfls=0");
       
分享到:
评论

相关推荐

    【Oracle】LISTAGG函数的使用.pdf

    Oracle LISTAGG 函数的使用 Oracle LISTAGG 函数是 Oracle 11.2 中引入的一种新特性,主要功能类似于 wmsys.wm_concat 函数,即将数据分组后,把指定列的数据再通过指定符号合并。LISTAGG 函数有两个参数:要合并的...

    Oracle函数之LISTAGG

    Oracle数据库中的LISTAGG函数是一个非常实用的聚合函数,它允许你在一组数据中对特定列的值进行排序和拼接,生成一个字符串结果。这个函数特别适用于需要将多个行的数据合并到一行的情况,例如,当你想要在一个报告...

    ACCESS 分组合并

    由于ACCESS 没有oracle的listagg函数,也没有sql server这种 for xml path 这种, 要实现分组合并需要自定义一个函数,理解了 for xml path 这个就很好理解了。

    oracle列合并的实现方法

    在使用这些方法时,要特别注意数据类型、字符集以及可能存在的性能问题,如`WM_CONCAT`在大数据量时可能会遇到内存溢出的问题,而`LISTAGG`则受到`GROUPING SETS`或`ROLLUP`的限制。在选择最佳方法时,需要综合考虑...

    oracle实现行转列功能,并使用逗号进行隔开拼接,成为一条数据.pdf

    Oracle 实现行转列功能并使用逗号...使用 WM_CONCAT 函数或 LISTAGG 函数可以实现 Oracle 中的行转列功能,并使用逗号进行隔开拼接,成为一条数据。然而,需要注意 WM_CONCAT 函数已经被弃用,建议使用 LISTAGG 函数。

    ORA-00904: "WM_CONCAT": 标识符无效

    WM_CONCAT是Oracle 10g及更早版本中用于字符串合并的一个非标准函数,但在11g版本中被废弃,取而代之的是新的标准SQL聚合函数LISTAGG。 在Oracle 11g R2及更高版本中,WM_CONCAT函数不再可用,因此在19c中遇到这个...

    Oracle 多行记录合并_连接_聚合字符串的几种方法_oracle_脚本之家1

    `LISTAGG`函数可以将同一分组内的多个值合并成一个字符串,并按照指定的排序顺序(这里是按城市名字的顺序)。这种方法比上一种更灵活,但仍然依赖于固定的表和字段。 3. 灵活表函数法 这种方法更加灵活,但可能会...

    owmaggrb owmaggrs owmctab

    `wm_concat`函数的替代方案有多种,其中最常用的是使用`listagg`函数。`listagg`是Oracle 11g引入的聚合函数,它可以将一组行的数据合并为一个字符串,支持分组和排序。例如,如果你有一个包含产品ID和名称的表,你...

    oracle语法大全

    `LISTAGG`是Oracle 11g版本引入的新功能,它允许我们对分组后的数据进行聚合,将同一组内的多行数据合并成单行,并以指定的分隔符连接。例如,假设我们有一个`employees`表,包含`employee_id`和`department`字段,...

    oracle材料

    本文将深入探讨在"Oracle材料"中提到的一些关键知识点,包括`listagg`函数、Oracle SQL Developer的使用、数据导入导出、远程登录、`rownum`与分组排序以及`wm_concat`函数。 1. **Listagg函数**:`listagg`是...

    Oracle SQL实用讲解,最基本最实用的相关讲解

    在本文中,我们将深入探讨Oracle SQL中的WITH子句、连接操作、rpad函数以及listagg函数,这些都是数据库查询中非常重要的概念。 1. **WITH子句**: WITH子句,也称为子查询部分或子查询分层,允许你在SQL查询中...

    ORA-00904 WMSYS.WM_CONCAT标识符无效解决方案

    2. **自定义函数**:如果不能使用LISTAGG(例如,在Oracle 10g或更低版本中),可以创建自己的自定义聚合函数来替代WM_CONCAT。 3. **调整查询**:在某些情况下,可能可以通过重新构造查询,使用嵌套的SELECT语句或...

    数据结构————二差排序树标准写法

    二差排序树树,关于数据结构的二差排序树,仅供参考!!!!!!!!!!!!!!!!!!!

    oracle学习集锦

    关于拼串函数,Oracle提供了一系列的字符串连接函数,如`CONCAT`、`||`运算符以及`LISTAGG`聚合函数(在Oracle 11g及以上版本中引入)。`CONCAT`函数用于连接两个或更多字符串,而`||`运算符则更灵活,可以连接任意...

    Oracle接收长度大于4000的字符串

    ### Oracle接收长度大于4000的字符串 在Oracle数据库中,默认情况下,`VARCHAR2`类型字段的最大长度为4000个字符。当需要处理更长的字符串时(例如,超过4000个字符),可以采用多种方法来解决这一问题。...

    Oracle迁postgre 不兼容字段、函数等更改

    10. LISTAGG 函数:Oracle 中的 LISTAGG 函数在 PostgreSQL 中对应的函数是 STRING_AGG。例如,在 Oracle 中的 LISTAGG(字段名, '/') 等同于 PostgreSQL 中的 STRING_AGG(字段名, '/')。 Oracle 迁移到 PostgreSQL ...

    自写函数用于替换wm_concat函数.zip

    总之,"自写函数用于替换wm_concat函数.zip"提供的解决方案旨在帮助Oracle数据库用户在不支持`WM_CONCAT`的环境中实现行数据的合并,利用`LISTAGG`等内置函数,提供了灵活且高效的数据处理方式。对于那些依赖`WM_...

    WM_CONCAT.zip

    `WM_CONCAT`的替代方案是使用`LISTAGG`函数,这是Oracle 11g引入的一个新特性,它可以将行集中的数据聚合为单个字符串,同时支持分隔符。例如,如果你有一个包含产品ID的表,你可以用`LISTAGG`来生成一个逗号分隔的...

    解决Oracle没有WM_CONCAT函数.zip

    1. 使用LISTAGG函数:从Oracle 11g开始,官方提供了LISTAGG函数,它可以按照指定的分隔符连接字符串。例如: ```sql SELECT LISTAGG(column, ', ') WITHIN GROUP (ORDER BY column) AS aggregated_column FROM ...

    wm_concat函数所需资源包

    1. **使用LISTAGG函数**:`LISTAGG`是Oracle 11g引入的官方聚合函数,它更安全,功能更强大,支持排序和分隔符。替换示例: ```sql SELECT department_id, LISTAGG(employee_id, ', ') WITHIN GROUP (ORDER BY ...

Global site tag (gtag.js) - Google Analytics