在做项目的时候,遇到将多条记录合并为一条记录,然后将不同的字段合并为一个字段显示,并用逗号分开;本人使用后,解决了很多不便解决的问题,特整理如下,以供各位网友参考!
具体创建如下:首先打开sql_plus:
创建函数使用的强制类:
--oracle9i聚合函数 (查询时使用)
create type CatStringImpl as object (
catstring VARCHAR2(4000), -- 返回的字符串
static function ODCIAggregateInitialize(sctx IN OUT CatStringImpl)
return number,
member function ODCIAggregateIterate(self IN OUT CatStringImpl,value IN varchar2)
return number,
member function ODCIAggregateTerminate(self IN CatStringImpl,returnValue OUT varchar2, flags IN number)
return number,
member function ODCIAggregateMerge(self IN OUT CatStringImpl,ctx2 IN CatStringImpl)
return number
);
然后创建函数方法,就是函数功能:
create or replace type body CatStringImpl as
static function ODCIAggregateInitialize(sctx IN OUT CatStringImpl) return number is
begin
sctx := CatStringImpl('');
return ODCIConst.Success;
end;
member function ODCIAggregateIterate(self IN OUT CatStringImpl, value IN varchar2) return number is
begin
self.catstring := self.catstring || ',' || value;
return ODCIConst.Success;
end;
member function ODCIAggregateTerminate(self IN CatStringImpl, returnValue OUT varchar2, flags IN number) return number is
begin
returnValue := self.catstring;
return ODCIConst.Success;
end;
member function ODCIAggregateMerge(self IN OUT CatStringImpl , ctx2 IN CatStringImpl ) return number is
begin
self.catstring := self.catstring || ',' || ctx2.catstring;
return ODCIConst.Success;
end;
end;
最后就是建立函数:
create function catstr( input varchar2 ) return varchar2 PARALLEL_ENABLE AGGREGATE USING CatStringImpl;
这样就建立好了目标函数,在查询调用时如下:
select catstr( a) , b , c from tb group by b , c 就可以将字符串按照code组合起来.
catstr为函数名称,其中a是同个字段对应有不同的值,b,c就是同个字段并且相同的值.
有了这个方法,以后使用就方便多了!
分享到:
相关推荐
为了在这些版本中实现类似的功能,需要自行创建一个用户定义的聚合函数。下面将详细介绍如何创建这样一个函数。 #### 知识点二:定义类型(string_sum_obj) 首先,需要定义一个类型`string_sum_obj`,用于存储中间...
这个错误通常意味着试图访问或使用`WMSYS.WM_CONCAT`函数时遇到了问题,这是一个在早期Oracle版本中提供的聚合函数,用于字符串连接,但在较新的版本中被弃用并替换为其他更安全和高效的解决方案。 `WMSYS`是Oracle...
5. **聚合函数** - `COUNT()`:计算行数。 - `SUM()`:计算数值列的总和。 - `AVG()`:计算平均值。 - `MAX()` 和 `MIN()`:找到最大值和最小值。 6. **分组和排序函数** - `GROUP BY`:根据一个或多个列对...
在Oracle数据库中,WM_CONCAT是一个非常实用的聚合函数,用于将一组字符串连接成一个单一的字符串,类似于SQL Server中的STRING_AGG或MySQL中的GROUP_CONCAT。然而,Oracle官方并没有提供这个函数,它是一个第三方...
根据提供的文件信息,本文将对重写Oracle中的`wm_concat`函数进行详细的解析与扩展讨论。此函数在Oracle数据库中用于连接多个字符串为一个单一的字符串。原生的`wm_concat`函数虽然能够满足基本需求,但在特定场景下...
4. **聚合函数与分析函数**: - 分组函数如COUNT、SUM、AVG、MAX、MIN在GROUP BY子句中使用,对分组数据进行计算。 - 分析函数如ROW_NUMBER、RANK、DENSE_RANK、LAG、LEAD等,用于窗口查询,提供行间计算功能。 5...
5. **聚合函数**:如COUNT(计数)、SUM(求和)、AVG(平均值)、MAX/MIN(最大/最小值),这些函数在数据分析和报表生成中不可或缺。 6. **逻辑函数**:如IFNULL或NVL(处理空值),以及AND/OR/NOT(逻辑运算),...
10. **基本的SQL SELECT语句**:这是数据库查询的基础,涉及选择列,从表中选择行,过滤数据(WHERE子句),排序结果(ORDER BY子句),分组数据(GROUP BY子句)和汇总数据(使用聚合函数如COUNT, SUM, AVG等)。...
5. **聚合函数**:`COUNT()`计算数量,`SUM()`求和,`AVG()`计算平均值,`MAX()`和`MIN()`找出最大最小值。 6. **条件函数**:`IFNULL()`或`NVL()`处理空值,`DECODE()`用于条件判断。 **二、存储过程语法** 存储...
以上仅为Oracle与SQL Server函数对比的部分内容,实际应用中,两个系统在函数的实现细节、语法糖以及性能优化上存在差异,开发者需根据具体需求选择合适的数据库系统和函数调用方式。通过深入理解这些函数的异同,...
这个过程利用了DECODE函数来实现对不同列的聚合。 在Java中调用这个Oracle存储过程,你需要使用JDBC驱动。首先,建立数据库连接,然后创建CallableStatement对象,设置输入参数,如`valtype`,并声明输出参数,即...
接着,将深入讲解如何使用SELECT语句进行数据查询,包括聚合函数、子查询、连接操作以及窗口函数的应用。此外,还会涵盖DML语句(INSERT、UPDATE、DELETE)以及事务管理和并发控制。 PL/SQL是Oracle特有的过程化...
在Oracle中,SQL不仅用于基础的CRUD(创建、读取、更新、删除)操作,还支持复杂的查询和联接,如子查询、联接查询、分组和聚合函数、窗口函数等。在提供的资料中,你可以找到SQL基本语法的学习材料和练习题,这些将...
然而,索引的维护也需要一定的开销,因此在创建索引时需要权衡其带来的好处与成本。 以上是针对Oracle数据库优化的一些建议,旨在帮助数据库管理员和开发人员更好地管理数据和提高查询性能。在实际应用中,还需要...
`STRAGG`函数在某些数据库系统中是一个内置的聚合函数,但在Oracle中并不是,所以很可能这两个脚本是用户自定义实现的版本。 `STRAGGC`可能是一个CLOB版本的实现,它的功能是在聚合时返回CLOB类型的值,这样就可以...
6. **聚合函数和GROUP BY**:优化GROUP BY和HAVING子句,可能包括使用分析函数(如Lag(), Lead(), Rank()等)来减少数据处理,或者使用物化视图来预先计算结果。 7. **游标和循环**:在PL/SQL编程中,游标和循环...
在Oracle数据库中,自定义聚集函数为用户提供了高度的灵活性,允许他们根据特定需求创建自己的数据聚合逻辑。本文将深入探讨Oracle自定义聚集函数的实现与应用,包括其四个主要组成部分:`ODCIAggregateInitialize`...
在Oracle SQL中,函数分为多种类型,包括算术函数、字符串函数、日期/时间函数、转换函数、聚合函数、系统信息函数等。以下是一些主要类别及其关键函数的概述: 1. **算术函数**: - `ABS()`:返回一个数的绝对值...
- 使用子查询构造示例数据集并应用聚合函数。 #### 最小值 - SQLServer和Oracle都使用`MIN()`函数求最小值。 - 使用子查询构造示例数据集并应用聚合函数。 ### 处理NULL值 - SQLServer使用`ISNULL()`函数处理NULL...
2. **SQL语言**:深入讲解SQL查询语言,包括SELECT语句、JOIN操作、子查询、聚合函数和窗口函数,以及如何使用DML语句(INSERT、UPDATE、DELETE)进行数据操作。 3. **PL/SQL编程**:学习Oracle的存储过程、函数、...