oracle 两行数据合并成一行_oracle查询多行数据合并成一行数据

本文介绍了在 Oracle 数据库中如何将多行数据合并为一行,特别是 Oracle 10g 及以上版本可以使用 WM_CONCAT 函数,而针对 9i 以下版本则提供了一种 SQL 解决方案,通过 ROW_NUMBER、SYS_CONNECT_BY_PATH 等函数实现数据合并。此外,文章还展示了如何按 ID 分组合并多个字段,并提供了创建视图的懒人扩展用法。
摘要由CSDN通过智能技术生成

如果是oracle 10g以上 一个wm_concat函数就可以解决。

如果是oracle 9i以下就有点麻烦了。

表结构如下:

NAME Null Type------------------------ --------- -----N_SEC_CODENOT NULL CHAR(6)

C_RESEARCHER_CODENOT NULL VARCHAR2(20)

此表保存了“股票”与“研究员”的对应关系数据,一般而言,对于同一只股票而言,可能有多个研究员

对其进行跟踪研究。所以目前遇到一个要求,需查询出每只股票和对应的研究员(研究员代码间,使用逗号分隔)。

例如有如下数据:

000297                                   chenpeng

000297                                   liusu

合并处理后需显示为:

000297                                   chenpeng,liusu

网上查了很多方法,但通常而言都是编写自定义多行文本合并函数,或者对支持的列数具有局限性。

最后在英文google中搜到如下比较巧的方法。不用在数据库中增加function,纯SQL一次性搞定,

而且扩充性很好,没有列的限制。

SELECT n_sec_code, TRANSLATE (LTRIM (text, '/'), '*/', '*,') researcherListFROM (SELECT ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BYn_sec

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值