- 浏览: 128612 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (165)
- 数据库 (45)
- 架构 (0)
- java web前端+框架 (9)
- java web后端+框架 (56)
- Eclipse插件 (1)
- 解题思路 (2)
- Eclipse (2)
- linux (6)
- jquery (4)
- 正则 (3)
- jsp (1)
- javascript (8)
- oracle (39)
- 生活 (1)
- weblogic (5)
- tomcat (3)
- Jrebel (1)
- powerdesigner (1)
- svn (1)
- log4j (1)
- IDE (1)
- POI (2)
- jvm (2)
- ssh (1)
- http (1)
- notepad++ (2)
- 润乾 (1)
- 设计模式 (0)
- 实用类Utils (2)
- 算法 (1)
- xml (1)
- 实用类 (2)
最新评论
Oracle 列转行函数 Listagg()
博客分类: Oracle SQL
这是一个Oracle的列转行函数:LISTAGG()
先看示例代码:
Sql代码 收藏代码
with temp as(
select 'China' nation ,'Guangzhou' city from dual union all
select 'China' nation ,'Shanghai' city from dual union all
select 'China' nation ,'Beijing' city from dual union all
select 'USA' nation ,'New York' city from dual union all
select 'USA' nation ,'Bostom' city from dual union all
select 'Japan' nation ,'Tokyo' city from dual
)
select nation,listagg(city,',') within GROUP (order by city)
from temp
group by nation
这是最基础的用法:
LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)
用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来。
非常方便。
同样是聚合函数,还有一个高级用法:
就是over(partition by XXX)
也就是说,在你不实用Group by语句时候,也可以使用LISTAGG函数:
Sql代码 收藏代码
with temp as(
select 500 population, 'China' nation ,'Guangzhou' city from dual union all
select 1500 population, 'China' nation ,'Shanghai' city from dual union all
select 500 population, 'China' nation ,'Beijing' city from dual union all
select 1000 population, 'USA' nation ,'New York' city from dual union all
select 500 population, 'USA' nation ,'Bostom' city from dual union all
select 500 population, 'Japan' nation ,'Tokyo' city from dual
)
select population,
nation,
city,
listagg(city,',') within GROUP (order by city) over (partition by nation) rank
from temp
总结:LISTAGG()把它当作SUM()函数来使用就可以了。
博客分类: Oracle SQL
这是一个Oracle的列转行函数:LISTAGG()
先看示例代码:
Sql代码 收藏代码
with temp as(
select 'China' nation ,'Guangzhou' city from dual union all
select 'China' nation ,'Shanghai' city from dual union all
select 'China' nation ,'Beijing' city from dual union all
select 'USA' nation ,'New York' city from dual union all
select 'USA' nation ,'Bostom' city from dual union all
select 'Japan' nation ,'Tokyo' city from dual
)
select nation,listagg(city,',') within GROUP (order by city)
from temp
group by nation
这是最基础的用法:
LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)
用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来。
非常方便。
同样是聚合函数,还有一个高级用法:
就是over(partition by XXX)
也就是说,在你不实用Group by语句时候,也可以使用LISTAGG函数:
Sql代码 收藏代码
with temp as(
select 500 population, 'China' nation ,'Guangzhou' city from dual union all
select 1500 population, 'China' nation ,'Shanghai' city from dual union all
select 500 population, 'China' nation ,'Beijing' city from dual union all
select 1000 population, 'USA' nation ,'New York' city from dual union all
select 500 population, 'USA' nation ,'Bostom' city from dual union all
select 500 population, 'Japan' nation ,'Tokyo' city from dual
)
select population,
nation,
city,
listagg(city,',') within GROUP (order by city) over (partition by nation) rank
from temp
总结:LISTAGG()把它当作SUM()函数来使用就可以了。
发表评论
-
oracle sql替换指定范围的字符串
2015-06-18 17:49 1071--oracle替换指定范围的字符串(范围4-6) selec ... -
oracle字符集修改 中文乱码
2015-03-30 15:06 939sqlplus / as sysdba;//操作系统用户认证模 ... -
转:ORACLE表空间管理维护
2015-03-27 11:25 528ORACLE表空间管理维护 2013-11-11 23:2 ... -
oracle表关联层级树查询
2015-03-20 17:27 620select level ,lpad(' ', ( ... -
转:oracle层次查询 树查询 (详细)
2015-03-20 15:03 862oracle层次查询 转自:http://www.2cto. ... -
oracle树查询(叶子、带缩进)
2015-03-17 09:46 1306select t.func_id as func_id --I ... -
ORACLE表空间管理维护
2015-01-22 11:34 436http://www.cnblogs.com/kerrycod ... -
自写函数用于替换wm_concat函数.zip
2015-01-19 16:25 1211-- wm_concat出现在oracle10g版本中,不仅是 ... -
禁用启用所有外键约束.tst
2015-01-12 11:05 586禁用所有外键约束.tst declare cursor c ... -
oracle查询生成列别名
2015-01-06 15:00 433select ',' ,col.COLUMN_NA ... -
分页帮助类-oracle-java
2014-10-09 17:46 456/** * 分页帮助类 * * @author ver ... -
oracle删除重复记录
2014-08-22 15:49 354delete from cred_account ca1 w ... -
oracle获取过程的错误异常代码,错误,异常栈信息
2014-08-22 15:19 317得到oracle异常行号,代码,异常栈信息 Sql代码 d ... -
数据库导入导出dump.txt
2014-07-28 10:26 448数据库导入导出dump -
Oracle分组分段统计-sum+case when+group by使用实例
2014-06-13 09:30 1440实例演示: (1)查询表users中的数据。 ... -
oracle表空间管理
2014-04-24 11:15 716--查看修改ORACLE表空间 --1、查看所有表空间信息 s ... -
连接到sqlplus
2014-04-17 11:25 454root/passwd su - oracle sqlplus ... -
0001-Oracle-系统-视图
2014-03-29 09:59 457--oracle树查询 select * from FUNC ... -
ORACLE查看并修改最大连接数
2014-03-26 13:52 553ORACLE查看并修改最大连接数 第一步,在cmd命令行,输入 ... -
oracle系统视图
2014-03-26 09:29 422--oracle树查询 select * from FUNC ...
相关推荐
然而,由于WM_CONCAT的局限性,Oracle建议使用其他替代方法,如使用LISTAGG函数(自Oracle 11g R2起提供)或者自定义聚合函数来实现类似的功能。LISTAGG函数提供了更好的控制,比如可以指定分隔符,并且是标准的SQL...
Oracle行转列 Oracle行转列是指在Oracle...Oracle行转列操作可以使用多种方法来实现,包括UNION ALL、MODEL、COLLECTION、AGGREGATE FUNCTION、LISTAGG、REGEXP_SPLIT等方法。这些方法可以满足不同的应用场景和需求。
- **字符串的列转行**:对于简单的列转行,可以使用`LISTAGG`函数,但其灵活性有限。推荐使用自定义的函数,如`to_string_limit`,它可以更灵活地控制字符串的排序、去重和长度限制。 在实际工作中,理解并熟练...
3. 列转行:Oracle 10g中,我们通常使用LISTAGG函数(在11g中引入,但在10g可以通过其他方式模拟)或者CONNECT BY语句来实现列转行。例如,如果我们有一个包含多个产品分类的列,希望将其拆分为多行,可以使用以下...
例如,使用 LISTAGG 函数可以将多个列转换成一个字符串。 4. 多行转换成字符串 多行转换成字符串是指将多行转换成一个字符串。例如,使用 LISTAGG 函数可以将多行转换成一个字符串。 5. 字符串转换成多列 字符串...
- 使用聚合函数(如 `LISTAGG`)将多行数据连接成一个字符串。 - **字符串转换成多列** - 使用 `SUBSTR` 和 `INSTR` 函数,或者 `REGEXP_SUBSTR` 函数将字符串拆分成多列。 - **字符串转换成多行** - 同样地,...
Oracle数据库提供了多种方法来实现这种转换,本篇将详细介绍如何在Oracle中进行行列转换,包括列转行、行转列以及各种复杂场景下的转换。 1. 列转行 列转行主要是将数据库表中的多列数据转换为多行数据。在Oracle...
列转行是指将数据表中的列转换为行的操作。这种转换常用于将分类数据展平,以便更好地展示数据之间的关系或进行后续的数据分析。根据给定的部分内容,我们可以通过三种不同的方法来进行列转行操作。 ##### 2.1 使用...
- 列转行:使用UNPIVOT或其他数据库函数将列数据转换为行数据。 - 将结果集反向转置为一列:将多行数据合并为单个字段。 - 抑制结果集中的重复值:使用DISTINCT关键字。 - 利用“行转列”进行计算:在转换后的...