今天,同事问了我一个oracle的问题,在他查询的表中有多行数据除了一个字段外都是相同的,他想合并成一条,并且把那个不同的字段用逗号连接起来,我想了一会儿,觉得除了相关子查询我想不出其他方法来。
但是我试验后发现,思路到是对,但是因为我不清楚有多少一样的,所以我觉得应该做成一个function来循环
SQL> desc t2
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(10)
SQL> select * from t2;
ID NAME
---------- ----------
1 aa
1 bb
1 cc
2 asd
2 asdvvv
要求得到的结果是这样的
1 aa,bb,cc
2 asd,asdvvv
根据需要得到的结果我创建了一个function:
create or replace function v_t2(v_id in number)
return varchar2
is
v_str varchar2(1000);;--连接后字符串
str varchar2(10) default null;;--连接符号
begin
for s in (select name from t2 where id=v_id) loop
v_str := v_str ||str||s.name;
str :=',';
end loop;
return v_str;
end;
然后使用后得到以下结果
SQL> select distinct id,v_t2(id) from t2;
ID V_T2(ID)
---------- ------------------------------
1 aa,bb,cc
2 asd,asdvvv
我在google下搜索了下,oracle可以自定义聚合函数来搞定这个问题,不过语句有点复杂,要多学习学习.
分享到:
相关推荐
本篇文章将详细介绍Oracle中实现多行记录合并的几种方法,包括使用SQL函数、集合操作以及自定义函数。 1. **使用SQL函数:** - **`LISTAGG()` 函数:** 这是Oracle 11g及以后版本引入的一个强大的聚合函数,专门...
Oracle数据库在处理多行记录合并、连接和聚合字符串时,有多种方法,下面将详细介绍其中的几种常见技术。 1. 被集合字段范围小且固定型 这种方法适用于字段值有限且已知的情况。通过使用`DECODE`函数,我们可以为每...
### Oracle多行记录字符串综合操作几种方法 #### 引言 在Oracle数据库中,处理多行记录中的字符串是一项常见的需求,特别是在需要将多个值合并成一个字符串时。本文旨在介绍几种常用的多行记录字符串综合操作方法,...
在Oracle数据库中,有时我们需要将多个字段值转换为单个字符串,或者将多行记录合并成一行,这在数据处理和报告生成时尤其常见。Oracle提供了多种方法来实现这一目标,包括使用内置函数、PL/SQL过程以及一些高级特性...
在Oracle数据库中,合并多行记录的字符串是一个常见的需求,特别是在报表或数据分析中。这个问题涉及到字符串的连接和聚合,使得多个记录的某个字段值能够整合到一行。在Oracle中,虽然没有内置的聚合函数直接支持...
您可能感兴趣的文章:常用的Oracle doc命令(收藏)Oracle 多行记录合并/连接/聚合字符串的几种方法Oracle中字符串连接的实现方法php连接oracle数据库及查询数据的方法plsql连接oracle数据库报ora 12154错
### Oracle多行合并为一行的方法 在Oracle数据库中,有时候我们需要将多行数据合并成一行进行展示或处理,尤其是在报表生成、数据展示等场景中。本文将详细介绍如何使用Oracle纯SQL语句实现这一功能,并通过具体...
在Oracle 9i中,由于`wm_concat()`函数尚未被引入,因此需要采用更复杂的方法来实现多行合并为一行的功能。这里介绍一种使用`sys_connect_by_path()`函数结合`connect by`语法的方法。 **示例代码:** ```sql ...
在Oracle数据库中,有时我们需要将多行记录合并成一个单一的字符串,以便于查看或报告。在这种情况下,`WMSYS.WM_CONCAT`函数是一个非常实用的工具,尤其是在处理大量交易记录时,用户希望避免滚动浏览,而是直接...
在SQL中,有时候我们需要将查询结果中多行的数据合并成一行,这在处理...不过要注意的是,这种方法在大数据量下可能会有性能问题,因为递归连接可能会消耗大量资源。在实际应用中,应考虑数据量和性能优化的可能性。
数据库操作类(支持OleDb、MySQL、Oracle、SQL、SQLite、) 操作: 获取连接字符串 得到web.config里配置项的数据库连接字符串。 数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库. ...
以上就是使用C#访问Oracle数据库并处理Blob字段的基本方法。在实际开发中,还需要考虑错误处理、事务管理、连接池等高级概念,以确保代码的健壮性和性能。同时,为了安全起见,建议使用参数化查询来防止SQL注入攻击...
在Oracle中,连接查询和子查询以及存储过程与触发器是数据库管理与开发中的核心概念,下面将对这些主题进行深入讲解。 首先,让我们探讨**连接查询**。在数据库操作中,连接查询用于合并两个或更多表的数据,根据...
总结起来,Oracle提供了多种方法来合并多行记录的字符串,如`LISTAGG`和`WM_CONCAT`,以及自定义的解决方案。选择哪种方法取决于你的具体需求,包括数据量、是否需要排序、使用的Oracle版本等因素。掌握这些技巧将极...
这些方法可能使用OracleConnection类,该类是ADO.NET的一部分,用于建立与Oracle服务器的连接。连接字符串会包含数据库的URL、用户名、密码等信息。 2. **命令执行**:类中会包含用于执行SQL语句的方法,如...
首先,在 Oracle 数据库中创建一个包(PACKAGE),包中包含多个存储过程,每个存储过程可以返回一个游标(REF CURSOR),该游标可以返回多行记录集。下面是一个示例包的定义: ```sql CREATE OR REPLACE PACKAGE PKG...
13. **游标**:在PL/SQL中处理单行或多行结果集的方法。 14. **连接到数据库**:使用不同的API(如JDBC,ODBC,Net8,TNS等)连接到Oracle数据库的步骤。 15. **备份与恢复**:如何执行数据库备份,以及在数据丢失...