`

Oracle 行转列与列转行

 
阅读更多

Oracel 行转列与列转行

 

一、 列转行
1. 使用函数:wm_concat()
2. 函数说明:该函数将某一列,根据条件转换成一行(相当于把列里的值合并,并用逗号区分各个值)
3. 例子:

 

表 testT 中有数据如下所示:
xh  age
1    11
1    12
1    13

2    21
2    22

3    31

 

Sql:
select t.xh, wm_concat(t.age) age from testT t group by t.xh;

 

查询结果如下所示:
xh  age
1    11,12,13
2    21, 22
3    31

 

PS: wm_concat() 函数还可以与 over\order by 联合使用, 这里不再复述, 感兴趣的可以去查询了解一下。

 

二、 行转列
1. 使用函数: regexp_substr()、regexp_replace()、level(connect by)、length()
2. 原理说明: 使用level...connect by.. 和 length() 来控制转换后列的数量
                       使用regexp_substr()控制如何拆分
3. 例子:

 

现有数据如下:
11,12,13

 

sql:
select regexp_substr('11,12,13', '[^,]+', 1, level) age from dual
connect by level <= (
                     Length('11,12,13') - Length(regexp_replace('11,12,13', ',', '')) + 1
                    );

 

转换后的结果如下所示:
age
11
12
13

 

PS: 这里使用到了正则表达式,有兴趣的可以看下这篇文章:

http://xuzonghua-itianyi-com.iteye.com/blog/2048219

分享到:
评论

相关推荐

    oracle行转列,列转行的例子

    oracle行转列,列转行的例子

    Oracle行转列之pivot

    在Oracle数据库中,行转列(也称为数据透视)和列转行(unpivot)是SQL查询中用于数据转换的高级功能。从Oracle 11g版本开始,引入了PIVOT和UNPIVOT关键字,以支持显式的查询转换,即从行数据转换为列数据,或从列...

    oracle行转列

    - T-SQL_经典行专列、列转行,分页及存储过程.doc:T-SQL是SQL Server的扩展,但其中的行转列和分页概念与Oracle相似。在Oracle中,可以使用ROW_NUMBER()函数配合PARTITION BY和ORDER BY来实现分页查询。 - oracle_...

    sql行转列,与列转行

    sql 行转列 与列转行,oracle ,msssql等,详细数据库操作方法,各种例子,欢迎大家学习。、~

    DB2 SQL 实现行转列,列转行

    DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列

    Oracle的列转行问题

    列转行(Pivot)和行转列(Unpivot)是两种基本操作,可以将数据按照不同的维度进行组织。传统的列转行方法通常涉及`DECODE`或`CASE`函数与聚合函数如`MAX`或`MIN`的结合,但这些方法可能在处理大量数据时对性能造成...

    oracle的列转行问题

    在 Oracle 中,通常使用 decode 或者 case 函数与聚合函数联合实现列转行功能。但是,这种方法存在一些缺陷,例如性能问题和数据重复访问问题。在本文中,我们将介绍一种新的解决方案,来解决 Oracle 列转行问题。 ...

    Oracle行转列

    Oracle行转列 Oracle行转列是指在Oracle数据库中将行数据转换为列数据或将列数据转换为行数据的操作。这种操作在实际应用中非常有用,例如,在数据报表、数据分析和数据挖掘等领域都需要使用行转列操作。 1. 列...

    oracle中实现列转行实例

    oracle中实现列转行实例,有表的创建,数据的插入,查询的sql

    ORACLE 列转行 DECODE函数用法

    在列转行的应用中,DECODE函数可以与PIVOT操作结合使用。PIVOT操作用于将行转换为列,而DECODE则用于提供列值的逻辑判断。比如,如果你有一个销售数据表,包含产品ID、月份和销售额,你可以通过以下方式将不同产品的...

    列转行小工具

    在Oracle Developer中,"列转行小工具"是一种实用功能,它主要用于处理数据库表中的数据,将多列数据转换为单列数据,通常涉及到的是数据的行列转换操作。这种操作在处理复杂的数据分析、报表生成或者接口对接时非常...

    oracle的列转行函数

    SELECT TRIM(',' FROM SYS.STRAGG(A_NAME||NVL2(A_NAME,',','')))as nams FROM A_TEMP

    ORACLE行转列

    许多情况下,由于程序中需要将行转为列展示,如果使用ORACLE那么这个资源适合你。

    Oracle逗号分隔列转行实现方法

    因此用到了逗号分隔列转行的方法。目前该方法只适合在oracle数据库中使用。该方法只需要sql语句就可以实现列转行。  下面给出该方法的示例: select a,b,c from(with test as (select ‘aaa’ a,’bbb’ b,’1,2,3...

    oracle 多列分组和行转列 理解和实例

    理解日常工作中常用到的多列分组, 如【统计不同部门、 不同职位的平均工资】和 行转列 包含例子 和 个人理解分析

    sql动态行转列 存储过程

    `PIVOT`是Oracle数据库特有的行转列函数,而`CASE`语句则在大多数SQL方言中可用。 3. **执行动态SQL**:使用`EXEC`或`sp_executesql`(在SQL Server中)来执行动态构建的SQL语句。 4. **处理结果**:存储过程可以...

Global site tag (gtag.js) - Google Analytics