oracle 10g wmsys.wm_concat行列转换函数的使用:
首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,接下来上例子,看看这个神奇的函数如何应用
1、把结果按分组用逗号分割,以一行打印出来。(如果需要换其它的可以用replace函数:replace(wm_concat(name),',','|'))
select t.u_id,
wmsys.wm_concat(t.goods),
wmsys.wm_concat(t.goods || '(' || t.u_id || '斤)')
from tb_index t
group by t.u_id;
2、over(partition by t.u_id)用法:
select t.u_id, www.2cto.com
wmsys.wm_concat(t.goods || '(' || t.u_id || '斤)') over(partition by t.u_id)
from tb_index t;
3、over(order by t.u_id)用法:
select t.u_id,
wmsys.wm_concat(t.goods || '(' || t.u_id || '斤)') over(partition by t.u_id)
from tb_index t;
4、懒人扩展用法:(大表很多字段我需要串起来)
select 'select '|| wm_concat('t.'||column_name) || ' from TB_INDEX t' from user_tab_columns where table_name='TB_INDEX';
sys_connect_by_path(columnname, seperator) :用来构造树路径的,所以需要和connect by一起来用。
sys_connect_by_path 函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示
select t.areaid,
t.parentareaid,
t.areaname,
sys_connect_by_path(t.areaname, '-') area
from tb_index t
start with t.areaname = '中国'
connect by t.parentareaid = prior t.areaid;
www.2cto.com
listagg:11gr2还新增了一个分析函数LISTAGG,这个函数的功能实现字符串的连接
create table t (id number, name varchar2(30), type varchar2(20));
insert into t
select rownum, object_name, object_type from dba_objects;
select listagg(name, ',') within group(order by id)
from t
where rownum < 10;
select type, listagg(name, ',') within group(order by id) name
from t
where type in ('DIRECTORY', 'JAVA SOURCE', 'SCHEDULE')
group by type;
select name,
listagg(name, ',') within group(order by id) over(partition by type) s_name
from t
where type in ('DIRECTORY', 'JAVA SOURCE', 'SCHEDULE');
注意: select wm_concat(列名) from table ,如果出现乱码用 wm_concat(to_char(列名)) 解决
相关推荐
本文将深入解析一个Oracle行列转换的例子,通过详细解释SQL语句的构成及其背后的逻辑,帮助读者理解如何在Oracle中实现行列转换。 ### Oracle行列转换例子解析 #### SQL语句结构分析 给定的SQL语句主要分为几个...
本文将深入探讨Oracle中实现行列转换的几种方法,包括使用`UNION ALL`、`MODEL`子句以及集合类型(`collections`),并提供具体的示例来帮助理解。 ### 1. 使用`UNION ALL`进行行列转换 `UNION ALL`是一种简单直接的...
- 进行行列转换的具体实现通常涉及多个步骤,包括找出关键字的属性个数,创建新的列,使用分析函数定位属性的位置,最后将多行数据合并为一列。具体的 SQL 语句可能会根据实际数据结构和需求有所不同,但主要思路是...
下面将详细探讨在Oracle中实现行列转换的两种常见方法:使用DECODE函数的聚合查询和使用UNION操作符。 ### 一、使用DECODE函数的聚合查询 这种方法主要利用Oracle的DECODE函数,通过条件判断将特定的行值映射到...
行列转换,sys_connect_by_path,row_number等函数的用法
Oracle 行列转换总结 Oracle 行列转换是指在 Oracle 数据库中将行与列之间进行转换的操作。这种转换有六种情况:列转行、行转列、多列转换成字符串、多行转换成字符串、字符串转换成多列、字符串转换成多行。 1. ...
### Oracle 行列转换知识点详解 #### 一、概述 在数据库操作中,行列转换是一项非常实用的功能,尤其是在处理报表数据或需要特定格式输出时。本文档将详细讲解Oracle数据库中的行列转换方法,并通过具体实例来说明...
### Oracle 行列转换知识点详解 #### 一、概述 在数据库操作中,有时需要将数据从行格式转换为列格式或反之亦然,这种需求通常被称为“行列转换”。Oracle 提供了多种方法来实现这样的转换,适用于不同的场景。本文...
本文将详细介绍如何在Oracle中实现行转列(即行列转换的一种)以及列转行的操作,分别通过使用`decode`函数和`insert...select`语句来实现。 ### 一、使用`decode`函数进行“行转列” #### 1. **背景与需求** 在...
在Oracle数据库中,有时我们需要将表格中的行转换为列或将列转换为行,这种操作被称为行列转换。这种转换对于数据分析、报表制作等场景非常有用。本文将详细介绍Oracle中如何进行行列转换,并提供实际的例子。 ####...
### Oracle 数据库中的行列转换详解 #### 一、引言 在处理复杂的数据查询与展示时,经常会遇到需要将数据库中的行数据转换成列数据的需求,这种操作通常被称为“行列转换”。例如,当我们想要汇总不同部门对各种...
在Oracle数据库中,数据的行列转换是数据处理过程中的常见操作,尤其在数据分析、报表制作以及数据展示时显得尤为重要。本篇文章将详细讲解Oracle 10g中的行列转换技术,包括如何实现行转列和列转行。 首先,我们要...
Oracle数据库中的行列转换是数据分析和报表制作中常见的需求,它涉及到将数据表中的一行数据转化为多列,或者相反,将多列数据转化成一行。在Oracle中,我们可以使用多种方法来实现这种转换,比如使用Pivot、Unpivot...
Oracle中的行列转换也提供了多种方法,其中最为常用的是使用`CASE`语句和`PIVOT`操作。 ##### 1. 使用 `CASE` 语句 在Oracle中使用`CASE`语句的方式与SQLServer类似,但需要注意Oracle中`CASE`语句的写法有所不同...
通过以上实例可以看出,DECODE函数在Oracle数据库中是一个非常灵活且强大的工具,能够帮助我们在查询中实现复杂的条件判断和数据处理,特别是在需要进行行列互换、数据聚合等场景下,DECODE函数的应用显得尤为关键。
这里我们将深入探讨Oracle中的一些常用函数,包括数值函数、转换函数、字符串函数以及行列转换函数。 一、数值函数 1. **ROUND()**:用于四舍五入数字,可以指定保留的小数位数。 2. **TRUNC()**:截断数字到指定...
总之,Oracle提供了多种方式进行行列转换,包括使用DECODE、分析函数、PL/SQL函数以及动态SQL等。选择哪种方法取决于数据的特性、需求的复杂性以及对性能的影响。在实际应用中,应结合具体情况灵活运用这些技术,以...
在Oracle中,可以使用 `DECODE` 函数来实现行列转换。 ```sql SELECT name, SUM(DECODE(course, '', grade, 0)) "", SUM(DECODE(course, '学', grade, null)) "学", SUM(DECODE(course, '', grade, null)) "", ...