按字段进行分组,没分组字段通过函数进行字符串的合并,用','分割
CREATE OR REPLACE FUNCTION zh_concat(P1 VARCHAR2) RETURN clob AGGREGATE USING zh_concat_im;
-----------------------------------------------------------------------------------------------
CREATE OR REPLACE TYPE BODY zh_concat_im IS
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT zh_concat_im)
RETURN NUMBER IS
BEGIN
SCTX := zh_concat_im(NULL);
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im,
P1 IN VARCHAR2) RETURN NUMBER IS
BEGIN
IF (CURR_STR IS NOT NULL) THEN
CURR_STR := CURR_STR || ',' || P1;
ELSE
CURR_STR := P1;
END IF;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im,
RETURNVALUE OUT clob,
FLAGS IN NUMBER) RETURN NUMBER IS
BEGIN
RETURNVALUE := CURR_STR;
RETURN ODCICONST.SUCCESS;
END;
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im,
SCTX2 IN zh_concat_im) RETURN NUMBER IS
BEGIN
IF (SCTX2.CURR_STR IS NOT NULL) THEN
SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR;
END IF;
RETURN ODCICONST.SUCCESS;
END;
END;
--------------------------------------------------------------------------------------
CREATE OR REPLACE TYPE "ZH_CONCAT_IM"
AUTHID CURRENT_USER AS OBJECT
(
CURR_STR clob,
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT zh_concat_im)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im,
P1 IN VARCHAR2) RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im,
RETURNVALUE OUT clob,
FLAGS IN NUMBER)
RETURN NUMBER,
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im,
SCTX2 IN zh_concat_im) RETURN NUMBER
)
相关推荐
* 自定义聚合函数 wmsys.wm_concat 替换办法 * 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的...
开窗函数与聚合函数一样,都是对行的集合组进行聚合计算。它用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用group by语句对数据进行分组,能够在同一行中同时返回...
oracle拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。
1.被集合字段范围小且固定型 灵活性 性能 难度 2.固定表固定字段函数法 灵活性 性能 难度 3.灵活表函数法 灵活性 性能 难度 4.一条SQL法 灵活性
1、 结构:聚合函数()over( partition by 字段1,字段2,字段3 order by 字段 desc/asc range between 数值/date preceding/flowing and 数值/date preceding/flowing) 聚合函数可以是:sum,count,avg,max,min,...
MySQL的group by与Oracle有所不同,查询得字段可以不用写聚合函数,查询结果取得是每一组的第一行记录。 利用上面的特点,可以利用mysql实现一种独特的排序; 首先先按某个字段进行order by,然后把有顺序的表进行...
Case When实现行列转换时会出现多条记录,如果不用聚合函数直接进行group by分组,那么检索的是基表里分组字段的第一条记录,如果使用max()函数之后再进行group by分组,那么就会检索每个字段的最大值然后再分组
8.4.1 跨越整个分区的聚合函数 201 8.4.2 细粒度窗口声明 201 8.4.3 默认窗口声明 202 8.5 Lead和Lag 202 8.5.1 语法和排序 202 8.5.2 例1:从前一行中返回一个值 203 8.5.3 理解数据行的位移 204 8.5.4 例2...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
注:本文使用字段为oracle数据库中默认用户scott下面的emp表,sal代表员工工资,deptno代表部门编号。 一、聚合函数 说明前我们先了解下聚合函数:聚合函数有时候也叫统计函数,它们的作用通常是对一组数据的统
这是一套体系化的SQL语句... (1)条件查询、排序、分组、模糊查询、聚合函数等基础部分讲解; (2)多表关联、子查询、常用字符、数字、日期处理技术等常用技术讲解; (3)对表、表内容、表字段的操作讲解。
0890 如何使用聚合函数First或Last 523 19.7 子查询与连接查询 523 0891 union与连接之间的区别 523 0892 如何应用IN查询表中的记录信息 524 0893 使用一个单行的子查询来更新列 524 0894 使用IN引入子...
《精通SQ:结构化查询语言详解》全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle进行讲解,很有代表性。 全书共包括大小实例317个,突出了速学速查的特色。《精通SQ:结构化查询语言...
4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 4.4.4 Oracle 4.4.5 DB2 4.4.6 数据库分页 4.5 抑制数据重复 ...
4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 4.4.4 Oracle 4.4.5 DB2 4.4.6 数据库分页 4.5 抑制数据重复 ...
4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 4.4.4 Oracle 4.4.5 DB2 4.4.6 数据库分页 4.5 抑制数据重复 ...
4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 4.4.4 Oracle 4.4.5 DB2 4.4.6 数据库分页 4.5 抑制数据重复 ...
4.3.2 数据分组与聚合函数 4.3.3 HAVING语句 4.4 限制结果集行数 4.4.1 MySQL 4.4.2 MS SQL Server 2000 4.4.3 MS SQL Server 2005 4.4.4 Oracle 4.4.5 DB2 4.4.6 数据库分页 4.5 抑制数据重复 ...