`
freemenff
  • 浏览: 34200 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

多行变一行 数据合并SQL

 
阅读更多
SELECT    n_sec_code, TRANSLATE (LTRIM (text, '/'), '*/', '*,') researcherList
     FROM (SELECT ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,
                   lvl DESC) rn,
                  n_sec_code, text
             FROM (SELECT      n_sec_code, LEVEL lvl,
                              SYS_CONNECT_BY_PATH (c_researcher_code,'/') text
                         FROM (SELECT    n_sec_code, c_researcher_code as c_researcher_code,
                                        ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,c_researcher_code) x
                                   FROM m_researcher_stock_rel
                               ORDER BY n_sec_code, c_researcher_code) a
                   CONNECT BY n_sec_code = PRIOR n_sec_code AND x - 1 = PRIOR x))
    WHERE rn = 1
ORDER BY n_sec_code;

预想的结果成功出现,多行数据成功汇总到一行,特此分享与大家。对于你自己的应用中,只需要把SQL中“n_sec_code”

换为你的用来汇总的列,“c_researcher_code”替换为需合并文本的列,“m_researcher_stock_rel”替换为你的表名,就是这么简单。

SQL分析:

1、利用 “ROW_NUMBER () OVER (PARTITION BY……” 为按“股票代码”汇总后的数据行添加组内序号

2、“SYS_CONNECT_BY_PATH” 按组内序号相邻关系,为每一层进行不同行的“研究员代码”叠加

3、再次利用“股票代码”进行组内分组,但按第二部中的层次排倒序,增加调整后等级

4、取所有调整后等级为1的结果,即为所要求的数据行

方法很巧妙,值得学习。:-)




又一个示例:

WITH tab AS(
select '01' no,'ss' name, 10 jiner,'麦子' you from dual union all
select '02' no,'dd' name, 11 jiner,'萝卜' you from dual union all
select '03' no,'cc' name, 9 jiner,'大豆' you from dual union all
select '01' no,'ss' name, 10 jiner,'白菜' you from dual)
SELECT a.no, a.name, a.jiner, ltrim(MAX(sys_connect_by_path(you, ',')), ',') you
FROM (SELECT row_number() over(PARTITION BY a.no, a.name, a.jiner
         ORDER BY a.no, a.name, a.jiner) rn,a.*
          FROM tab a) a
START WITH rn = 1
CONNECT BY PRIOR rn = rn - 1 AND
           a.no = PRIOR a.no AND
           a.name = PRIOR a.name AND
           a.jiner = PRIOR a.jiner
GROUP BY a.no, a.name, a.jiner
分享到:
评论

相关推荐

    sql实现多行合并一行

    在SQL中,有时候我们需要将查询结果中多行的数据合并成一行,这在处理某些特定的报表或数据分析时非常有用。这种技术通常被称为行合并或行聚合。在本例中,我们将探讨如何使用纯SQL实现这一功能,特别是针对Oracle...

    sybase数据库多行合并为一行多列.sql

    sybase数据库是不支持group_concat函数的,此文件为sybase存储过程样例,可以将多行信息按标识合并为一行多列。

    一列分割成多列,多行合并为一行

    SQL语句用with将列分割成多列存为临时表,再将多行某个字段拼接合并为一行

    SQL Server将一列的多行内容拼接成一行的实现方法

    昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行,比如表中有两列数据 : 类别 名称 AAA 企业1 AAA 企业2 AAA 企业3 ...

    SQL语句行数据拆成多行及多行数据合并成一行的方法.docx

    ### SQL语句行数据拆成多行及多行数据合并成一行的方法 #### 一、SQL语句对一行(单元格)数据拆分成多行 在处理数据时,有时我们需要将一行数据拆分成多行,这在数据分析和报表制作中非常常见。下面将详细介绍几...

    多行合并为一行的SQL语句.docx

    这个例子展示了如何使用SQL层级查询功能(如`CONNECT BY`和`SYS_CONNECT_BY_PATH`)来合并具有相同编号的多行数据为一行。这种方式适用于那些希望将分散的数据整合成紧凑格式的需求场景。此外,通过调整`SYS_CONNECT...

    sql 多行合并某一列字符串拼接的示例

    在SQL中,将多行数据合并为一行,尤其是在某一列进行字符串拼接,是一项常见的需求。这通常用于汇总数据、创建报表或者为了分析目的而整合信息。本文将深入探讨如何利用SQL实现多行数据的合并,特别关注字符串拼接的...

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

    在Oracle 10g中,可以通过`wmsys.wm_concat()`函数来轻松地将多行数据合并到一行中。此函数可以接受多个输入参数,并返回一个由所有参数组成的字符串列表。默认情况下,这些值会用逗号`,`分隔。如果需要使用其他字符...

    在SQL Server中将多行合并为一行

    在SQL Server中,将多行合并为一行是一个常见的需求,特别是在数据分析和报表生成时。这个过程通常被称为数据透视或行列转换。在这个场景中,我们使用SQL Server中的`PIVOT`操作来实现这一目标。`PIVOT`是SQL Server...

    oracle多行合并一行

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

    Sql Server:多行合并成一行,并做分组统计的两个方法

    代码如下:–创建 test 表 ,插入数据CREATE TABLE test(code varchar(50), [values] varchar(10),[count] int)INSERT test SELECT ‘001’, ... –方法一–将多行合并成一行,并做分组统计SELECT code, [values] = 

    Oracle多行记录合并

    在Oracle数据库中,多行记录的合并通常是为了将相同字段的多行数据整合成一行,以便于数据分析或者简化展示。这种操作在报表制作、数据整理等场景中非常常见。本篇文章将详细介绍Oracle中实现多行记录合并的几种方法...

    多行相同只显示第一行(分组显示).sql

    SQL查询结果部分字段信息重复时,去除重复信息,达到数据分组的效果,类似于EXCEL透视表,对数据库初学者还是有一定的帮助

    SQLServer中如何将一个字段的多个记录值合在一行显示

    SQLServer 中将一个字段的多个记录值合并到一行显示的实现方法 SQL Server 是一种关系型数据库管理系统,具有强大的数据处理能力和存储能力。在实际应用中,我们经常需要将一个字段的多个记录值合并到一行显示,以...

    SQL 合并多行记录的方法总汇

    SQL中合并多行记录的方法总汇: –1. 创建表,添加测试数据 CREATE TABLE tb(id int, [value] varchar(10)) INSERT tb SELECT 1, ‘aa’ UNION ALL SELECT 1, ‘bb’ UNION ALL SELECT 2, ‘aaa’ UNION ALL SELECT 2...

    mysql如何将多行数据合并成一行

    在MySQL数据库中,有时我们需要将具有相同分组标识的多行数据合并成一行,以便于数据分析和报告。这里,我们主要关注的是`GROUP_CONCAT`函数,它是一种非常实用的SQL聚合函数,能够帮助我们实现这个目标。下面,我们...

    SQL Sever中使用SQL语句实现把重复行数据合并为一行并用逗号分隔

    在SQL Server中,有时我们需要将具有相同值的重复行数据合并为一行,并使用逗号作为分隔符。这种操作在数据分析、报告生成或简化显示时非常有用。本文将详细介绍两种方法来实现这一目标,这两种方法都基于SQL Server...

    SQL 合并多行记录的相同字段值

    本文将探讨两种方法来合并SQL中的多行记录的相同字段值。 首先,一种常见的做法是通过编程语言如C#来处理。在程序中,我们可以先查询数据库,将结果存放在DataTable中。然后遍历DataTable,针对每一行数据,再次...

Global site tag (gtag.js) - Google Analytics