oracle的聚集函数wm_concat()和listagg()不适用时,自定义通用的聚集函数合并查询结果列
来源:互联网 发布:c 语言整型常量 编辑:程序博客网 时间:2024/05/23 18:11
1.wm_concat()函数是oracle内部用户下的函数,通常不建议使用,而listagg()函数只在oracle11g下才有,这时候就需要自定义合并列的聚集函数,具体sql如下:
CREATE OR REPLACE TYPE T_LINK AS OBJECT( STR VARCHAR2(32767), STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT T_LINK) RETURN NUMBER, MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER, MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN T_LINK, RETURNVALUE OUT CLOB, FLAGS IN NUMBER) RETURN NUMBER, MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER)/CREATE OR REPLACE TYPE BODY T_LINK IS STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT T_LINK) RETURN NUMBER IS BEGIN SCTX := T_LINK(NULL); RETURN ODCICONST.SUCCESS; END; MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER IS BEGIN SELF.STR := SELF.STR || VALUE || ','; RETURN ODCICONST.SUCCESS; END; MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN T_LINK, RETURNVALUE OUT CLOB, FLAGS IN NUMBER) RETURN NUMBER IS BEGIN RETURNVALUE := SUBSTR(SELF.STR, 1, LENGTH(SELF.STR) - 1); RETURN ODCICONST.SUCCESS; END; MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER IS BEGIN NULL; RETURN ODCICONST.SUCCESS; END;END;/CREATE OR REPLACE FUNCTION F_LINKS(P_STR VARCHAR2) RETURN CLOB AGGREGATE USING T_LINK;/
把这段sql在oracle中运行一下,就可以使用了,具体使用示例如下:
select F_LINKS(t.name) from PHY_DEVICE_TBL t where instr(c.deviceid, to_char(t.id)) > 0
合并的结果列之间是用逗号分隔的!
阅读全文
1 0
- oracle的聚集函数wm_concat()和listagg()不适用时,自定义通用的聚集函数合并查询结果列
- oracle自定义聚集函数实现列合并
- 自定义oracle聚集函数,类似于功能wm_concat
- 自定义oracle聚集函数,类似于功能wm_concat
- 自定义oracle聚集函数,类似于功能wm_concat
- Oracle 11g 新聚集函数listagg实现列转行
- Oracle 11g 新聚集函数listagg实现列转行
- Oracle 11g 新聚集函数listagg实现列转行
- WM_CONCAT LISTAGG函数,ORACLE列转行聚合的简单实现
- oracle的聚集函数
- 一个Oracle自定义聚集函数的例子
- oracle 合并列的函数wm_concat
- oracle合并列的wm_concat函数
- oracle合并列的函数wm_concat
- Oracle ListAgg 和 wm_concat函数
- oracle wm_concat 和 listagg函数
- oracle listagg和wm_concat函数
- Oracle自定义聚集函数
- springcloud中zuul的应用
- 【C++】学习笔记四十二——函数重载
- oracle字符串截取函数substr
- Android Webview加载带视频的网页,遇到的问题。
- 成员变量,静态变量,静态块,静态方法执行顺序
- oracle的聚集函数wm_concat()和listagg()不适用时,自定义通用的聚集函数合并查询结果列
- history.back(-1)和history.go(-1)的区别
- BitmapShader实现圆形头像
- 【数据结构】二叉树前序、中序、后序遍历相互求法
- react native 闪屏页(启动页)封装
- freeswitch cdr记录落地mysql
- git
- 动态生成标签栏和Fragment,动态数据插入填充,似今日头条
- 关于JUnit无法读取到方法总结