oracle 查询列合并行,Oracle 查询合并列

本文介绍了在Oracle数据库中合并列的四种方法:1) 使用DECODE函数;2) 利用wmsys.wm_concat函数;3) 通过连接符号' || '拼接;4) 自定义SQL语句进行复杂列合并。详细讲解了每种方法的语法和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ORACLE  查询时,有时要将多个列合并成一行,其方法如下:

1. decode 函数

decode 函数的语法为:

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

或 decode(条件,值1,返回值1,返回值2,...值n,返回值n,缺省值)

其定义如下::

IF 条件=值1 THEN

RETURN(翻译值1)

ELSIF 条件=值2 THEN

RETURN(翻译值2)

......

ELSIF 条件=值n THEN

RETURN(翻译值n)

ELSE

RETURN(缺省值)

END IF

例如:decode(字段或字段的运算,值1,值2,值3)

这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3

当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

2. wmsys.wm_concat 函数

把某一列合并,其语法为:wm_concat(列名)

把合并后的逗号(默认)换成其它的符号,比如|号 , replace(wm_concat(列名),',','|')

3. ||  连接符号

语法为: select col1,col2||'【' || col3|| '】' as A , col4 from table1其中 ‘【’ 是自行加入的符号,可根据 需要进行替换

4. 自定义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”替换为你的表名

参考文章:

http://www.cnblogs.com/heekui/archive/2009/07/30/1535516.html

http://blog.youkuaiyun.com/catoop/article/details/8124561

SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子

使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UN ...

SQL 合并列值和拆分列值

合并列值 表结构,数据如下: id value ----- ------ aa bb aaa bbb ccc 需要得到结果: id values ------ ----------- aa,bb aa ...

Oracle 查询出来的数据取第一条

Oracle 查询出来的数据取第一条 --------------------------------------------------------------------------- 转载自:h ...

Oracle查询和问题简记

现在做两个版本的系统,一个用的数据库是Access,另一个就是Oracle了.每个数据库支持的的查询SQL语句都有所区别,这里主要针对Access和Oracle做 记录. 首先贴出遇到问题最多的一条语 ...

45 个非常有用的 Oracle 查询语句

​ 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快 ...

oracle 查询最近执行过的 SQL语句(转载)

oracle 查询最近执行过的 SQL语句 (2014-06-09 18:02:43) 转载▼   分类: Database oracle 查询最近执行过的 SQL语句 select sql_text ...

【转】oracle查询用户表,函数,储存过程,

◆Oracle查询用户表空间:select * from user_all_tables ◆Oracle查询所有函数和储存过程:select * from user_source ◆Oracle查询所 ...

ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法

ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块  --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...

WMSYS.WM_CONCAT(distinct(字段名)) 函数,字符串拼接函数。合并列

合并列函数 WMSYS.WM_CONCAT(distinct(字段名)) 函数 可以实现字符串拼接在一起,这种情况可以在要求把一个字段的多个值拼接在一起的时候使用.其中distinct可以去掉重复的值 ...

随机推荐

spring注解 @Transactional

一.@Transactional所需要的jar包 1.aopalliance.jar  这个包是AOP联盟的API包,里面包含了针对面向切面的接口.(通常Spring等其它具备动态织入功能的框架依赖此 ...

关于Webstorm的一些配置

一:代码缩略图插件:CodeGlance: 二:皮肤与主题使用的sublime的系列风格. 三:实现内嵌JS代码的高亮显示.https://segmentfault.com/q/10100000024 ...

codeforces Fedor and New Game

#include #include #include #include #inclu ...

UIViewController的edgesForExtendedLayout属性

UIViewController的edgesForExtendedLayout属性 想必大家都遇到一种情况,明明y坐标设置的是0,但是总是被讨厌的导航栏给遮住.比如下面这个情况: UILabel *l ...

QT输入输出(一) 之 QDataStream 测试

QT提供了两个高级别的流类---QDataStream和QTextStream,可以从任意的输入输出设备读取或写入数据. QDataStream用于读写二进制数据,它的优点是:在读写数据的时候已经严格 ...

05_MyBatis基于注解的开发

 要想开发基于注解的MyBatis应用.需要先写一个带有注解的接口. PersonDao.java的写法如下: package com.rl.dao; import java.util.List; ...

git创建本地分支以及推送本地分之至远程分支

Git分支策略 实际开发中,应当按照以下几个基本原则进行管理: 首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能再上边干活. 那在哪干活呢?干活都在dev分支上,也就是说,de ...

Qt License 解读

对于桌面和移动平台应用 官方说明如下 Qt for Application Development lets you create applications for desktop and mobil ...

『OpenCV3』霍夫变换原理及实现

霍夫变换常用于检测直线特征,经扩展后的霍夫变换也可以检测其他简单的图像结构. 在霍夫变换中我们常用公式 ρ = x*cosθ + y*sinθ 表示直线,其中ρ是圆的半径(也可以理解为原点到直线的距离 ...

CPP Note

hello.cpp -> 编译代码g++ hello.cpp -o a -> a.out 区分大小写的编程语言 内置类型 一些基本类型可以使用一个或多个类型修饰符进行修饰: signed: ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值