oracle的listagg函数】的更多相关文章

今天需要将 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 这样就大功告成了......…
--Oracle列转行函数LISTAGG() with tb_temp as( select 'China' 国家,'Wuhan' 城市 from dual union all select 'China' 国家,'Dongjing' 城市 from dual union all select 'China' 国家,'Xijing' 城市 from dual union all select 'Germany' 国家,'Berlin' 城市 from dual union all select…
Oracle大师Thomas Kyte在他的经典著作中,反复强调过一个实现需求方案选取顺序: “如果你可以使用一句SQL解决的需求,就使用一句SQL:如果不可以,就考虑PL/SQL是否可以:如果PL/SQL实现不了,就考虑Java存储过程是否可以:如果这些都不可能实现,那么就需要考虑你是否真的需要实现这个需求.” 各个关系型DBMS产品都在遵守关系型数据库模型的基本体系架构,遵循通用的SQL国际规范.同时,为了更好地配合自身数据库实现的特征,以及提供更加丰富的功能,各个DBMS纷纷在标准SQL上…
一.wm_concat函数 wm_concat能够实现同样的功能,但是有时在11g中使用需要用to_char()进行转换,否则会出现不兼容现象(WMSYS.WM_CONCAT: 依赖WMSYS 用户,不同oracle环境时可能用不了,返回类型为CLOB,可用substr截取长度后to_char转化为字符类型). 测试用表test_org_bak select * from test_org_bak; 1.:行转列(默认逗号隔开) select wm_concat(level_four_name)…
简单的Oracle列转行函数Listagg示例: CREATE TABLE tbl_test (catalog VARCHAR(1),product VARCHAR(2),amount NUMBER); INSERT INTO tbl_test VALUES('A','A1',1); INSERT INTO tbl_test VALUES('A','A1',2); INSERT INTO tbl_test VALUES('B','B1',3); INSERT INTO tbl_test VALU…
方法一 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…
oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我们不知道oracle中的over函数,也不知道listagg函数. 我们先来看看wm_concat函数能实现什么功能,通俗点==>列传行,如果不明白,请看下面截图(可以看到分隔符默认为','顺序也是杂乱的)          所以,接下来,我们开始重写wm_concat函数(需要注意和需要说明的地方…
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进行性能方面的对比. 样例数据…