`
z10one
  • 浏览: 9544 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

oracle 自定义聚合函数(按字段分组,非分组字段进行合并)

 
阅读更多

按字段进行分组,没分组字段通过函数进行字符串的合并,用','分割

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
)

分享到:
评论

相关推荐

    Oracle10g自定义聚合函数(字符串拼接)

    * 自定义聚合函数 wmsys.wm_concat 替换办法 * 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的...

    SQL中的开窗函数详解可代替聚合函数使用

     开窗函数与聚合函数一样,都是对行的集合组进行聚合计算。它用于为行定义一个窗口(这里的窗口是指运算将要操作的行的集合),它对一组值进行操作,不需要使用group by语句对数据进行分组,能够在同一行中同时返回...

    oracle拼接字符串和拼接一列的值

    oracle拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。

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

    1.被集合字段范围小且固定型 灵活性 性能 难度 2.固定表固定字段函数法 灵活性 性能 难度 3.灵活表函数法 灵活性 性能 难度 4.一条SQL法 灵活性

    oracle分析函数在BI分析中应用事例

    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分组排序

    MySQL的group by与Oracle有所不同,查询得字段可以不用写聚合函数,查询结果取得是每一组的第一行记录。 利用上面的特点,可以利用mysql实现一种独特的排序; 首先先按某个字段进行order by,然后把有顺序的表进行...

    oracle_sql使用.docx

    Case When实现行列转换时会出现多条记录,如果不用聚合函数直接进行group by分组,那么检索的是基表里分组字段的第一条记录,如果使用max()函数之后再进行group by分组,那么就会检索每个字段的最大值然后再分组

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    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学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

    oracle中where 子句和having子句中的区别介绍

    注:本文使用字段为oracle数据库中默认用户scott下面的emp表,sal代表员工工资,deptno代表部门编号。 一、聚合函数  说明前我们先了解下聚合函数:聚合函数有时候也叫统计函数,它们的作用通常是对一组数据的统

    SQL语句从入门到精通迅速提升篇视频课程(Oracle零基础版)

    这是一套体系化的SQL语句... (1)条件查询、排序、分组、模糊查询、聚合函数等基础部分讲解;  (2)多表关联、子查询、常用字符、数字、日期处理技术等常用技术讲解;  (3)对表、表内容、表字段的操作讲解。

    C#开发经验技巧宝典

    0890 如何使用聚合函数First或Last 523 19.7 子查询与连接查询 523 0891 union与连接之间的区别 523 0892 如何应用IN查询表中的记录信息 524 0893 使用一个单行的子查询来更新列 524 0894 使用IN引入子...

    精通SQL 结构化查询语言详解

    《精通SQ:结构化查询语言详解》全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle进行讲解,很有代表性。 全书共包括大小实例317个,突出了速学速查的特色。《精通SQ:结构化查询语言...

    程序员的SQL金典6-8

     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 抑制数据重复 ...

    程序员的SQL金典7-8

     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 抑制数据重复 ...

    程序员的SQL金典4-8

     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 抑制数据重复 ...

    程序员的SQL金典3-8

     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 抑制数据重复 ...

    程序员的SQL金典.rar

     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 抑制数据重复 ...

Global site tag (gtag.js) - Google Analytics