三种方法实现表字段合并
原数据列表
方法一:wm_concat()简介
介绍:其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型。
括号里面的参数是列,而且可以是多个列的集合,也就是说在括号里面可以自由地用‘||’合并字符串
用法1: Select aaa, wmsys.wm_concat(bbb || '(' || ccc || ')' ) from table group by aaa
用法2: Select aaa, wmsys.wm_concat(bbb || '(' || ccc || ')' ) over(partition by aaa) from table
例子:
select wm_concat(''''||COMPANYID||'''') from O2O.O2O_DrugCompany where APPLICATIONTYPE=2 and STATUS=1 group by ISRECOMMEND
方法二LISTAGG() 简介
介绍:其函数在Oracle 11g 版本中推出,对分组后的数据按照一定的排序进行字符串连接。
其中,“[,]”表示字符串连接的分隔符,如果选择使用[over (partition by )]则会使其变成分析函数;
用法1: SELECT aaa, listagg(bbb,',') within GROUP (ORDER BY aaa) FROM table GROUP BY aaa
用法2: SELECT aaa, listagg(bbb,',') within GROUP (ORDER BY aaa) over(partition by aaa) FROM table
例子:
select listagg('''COMPANYID''',',') within group(order by ISRECOMMEND) from O2O.O2O_DrugCompany where APPLICATIONTYPE=2 and STATUS=1 group by ISRECOMMEND
方法三:wm_concat()与concat() 函数结合,无视分组数据,全部合并
JavaScript concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
例子:
Select wm_concat(concat('''',concat(COMPANYID,''''))) from O2O.O2O_DrugCompany where ISRECOMMEND=1 and APPLICATIONTYPE=2 and STATUS=1