`

Oracle多行记录连接的方法

阅读更多
今天,同事问了我一个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可以自定义聚合函数来搞定这个问题,不过语句有点复杂,要多学习学习.
0
0
分享到:
评论

相关推荐

    Oracle多行记录合并

    本篇文章将详细介绍Oracle中实现多行记录合并的几种方法,包括使用SQL函数、集合操作以及自定义函数。 1. **使用SQL函数:** - **`LISTAGG()` 函数:** 这是Oracle 11g及以后版本引入的一个强大的聚合函数,专门...

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

    Oracle数据库在处理多行记录合并、连接和聚合字符串时,有多种方法,下面将详细介绍其中的几种常见技术。 1. 被集合字段范围小且固定型 这种方法适用于字段值有限且已知的情况。通过使用`DECODE`函数,我们可以为每...

    Oracle多行记录字符串综合操作几种方法

    ### Oracle多行记录字符串综合操作几种方法 #### 引言 在Oracle数据库中,处理多行记录中的字符串是一项常见的需求,特别是在需要将多个值合并成一个字符串时。本文旨在介绍几种常用的多行记录字符串综合操作方法,...

    Oracle字段转字符串/多行记录合并/连接/聚合字符串的几种方法

    在Oracle数据库中,有时我们需要将多个字段值转换为单个字符串,或者将多行记录合并成一行,这在数据处理和报告生成时尤其常见。Oracle提供了多种方法来实现这一目标,包括使用内置函数、PL/SQL过程以及一些高级特性...

    Oracle 多行记录合并/连接/聚合字符串的几种方法

    在Oracle数据库中,合并多行记录的字符串是一个常见的需求,特别是在报表或数据分析中。这个问题涉及到字符串的连接和聚合,使得多个记录的某个字段值能够整合到一行。在Oracle中,虽然没有内置的聚合函数直接支持...

    oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法

    您可能感兴趣的文章:常用的Oracle doc命令(收藏)Oracle 多行记录合并/连接/聚合字符串的几种方法Oracle中字符串连接的实现方法php连接oracle数据库及查询数据的方法plsql连接oracle数据库报ora 12154错

    oracle多行合并一行

    ### Oracle多行合并为一行的方法 在Oracle数据库中,有时候我们需要将多行数据合并成一行进行展示或处理,尤其是在报表生成、数据展示等场景中。本文将详细介绍如何使用Oracle纯SQL语句实现这一功能,并通过具体...

    oracle10g,9i多行合并一行函数

    在Oracle 9i中,由于`wm_concat()`函数尚未被引入,因此需要采用更复杂的方法来实现多行合并为一行的功能。这里介绍一种使用`sys_connect_by_path()`函数结合`connect by`语法的方法。 **示例代码:** ```sql ...

    oracle—SQL技巧之(二)WMSYS.WM_CONCAT函数实现多行记录用逗号拼接在一起

    在Oracle数据库中,有时我们需要将多行记录合并成一个单一的字符串,以便于查看或报告。在这种情况下,`WMSYS.WM_CONCAT`函数是一个非常实用的工具,尤其是在处理大量交易记录时,用户希望避免滚动浏览,而是直接...

    sql实现多行合并一行

    在SQL中,有时候我们需要将查询结果中多行的数据合并成一行,这在处理...不过要注意的是,这种方法在大数据量下可能会有性能问题,因为递归连接可能会消耗大量资源。在实际应用中,应考虑数据量和性能优化的可能性。

    DBHelper数据库操作类(支持OleDb、MySQL、Oracle、SQL、SQLite).zip

    数据库操作类(支持OleDb、MySQL、Oracle、SQL、SQLite、) 操作: 获取连接字符串 得到web.config里配置项的数据库连接字符串。 数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库. ...

    C#访问oracle数据库类,带blob字段读写

    以上就是使用C#访问Oracle数据库并处理Blob字段的基本方法。在实际开发中,还需要考虑错误处理、事务管理、连接池等高级概念,以确保代码的健壮性和性能。同时,为了安全起见,建议使用参数化查询来防止SQL注入攻击...

    Oracle连接查询子查询以及存储过程触发器讲解

    在Oracle中,连接查询和子查询以及存储过程与触发器是数据库管理与开发中的核心概念,下面将对这些主题进行深入讲解。 首先,让我们探讨**连接查询**。在数据库操作中,连接查询用于合并两个或更多表的数据,根据...

    oracle语法大全

    总结起来,Oracle提供了多种方法来合并多行记录的字符串,如`LISTAGG`和`WM_CONCAT`,以及自定义的解决方案。选择哪种方法取决于你的具体需求,包括数据量、是否需要排序、使用的Oracle版本等因素。掌握这些技巧将极...

    OracleHelper

    这些方法可能使用OracleConnection类,该类是ADO.NET的一部分,用于建立与Oracle服务器的连接。连接字符串会包含数据库的URL、用户名、密码等信息。 2. **命令执行**:类中会包含用于执行SQL语句的方法,如...

    Delphi中调用oracle的存储过程返回数据集

    首先,在 Oracle 数据库中创建一个包(PACKAGE),包中包含多个存储过程,每个存储过程可以返回一个游标(REF CURSOR),该游标可以返回多行记录集。下面是一个示例包的定义: ```sql CREATE OR REPLACE PACKAGE PKG...

    oracle_sql帮助文档

    13. **游标**:在PL/SQL中处理单行或多行结果集的方法。 14. **连接到数据库**:使用不同的API(如JDBC,ODBC,Net8,TNS等)连接到Oracle数据库的步骤。 15. **备份与恢复**:如何执行数据库备份,以及在数据丢失...

Global site tag (gtag.js) - Google Analytics