在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.csdn.net/catoop/article/details/8124561

Oracle 查询合并列的更多相关文章

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

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

  2. SQL 合并列值和拆分列值

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

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

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

  4. Oracle查询和问题简记

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Python-接口自动化(一)

    python基础知识(一) 一.python语言特点 1.易于学习:python有相对较少的关键字,结构简单,有一个明确定义的语法,学起来比较简单: 2.易于阅读:python代码定义的更清晰: 3. ...

  2. SqlServer表中添加新字段

    表中添加新字段ALTER TABLE 表名 ADD 字段名 VARCHAR(20) NULL 表中添加自增idalter table lianxi add id int primary key IDE ...

  3. apache配置,apache直接打开文件而不下载问题

    apache什么用,如何下载的上面就不说了,apache的配置是一个非常复杂的工作,下面介绍最基本的apache配置吧,再介绍配置文件管理系统. 安装过后需修改配置: 修改httpd.conf配置文件 ...

  4. bootstrap--------bootstrap table

    bootstrap table 显示行号 <th rowspan="2" data-field="index" data-formatter=" ...

  5. 类的构造器-init和new

    提到构造器,大家都会想到 __init__,那么__new__是什么?也是构造器. init 构造器 都很熟悉了,直接上代码 class MyClass(object): def __init__(s ...

  6. Hadoop学习笔记04_Hbase

    大数据开发的学习,组件还是很多的,都需要掌握并多加练习. 最好的参考文档当然是官方的了. 因为Hadoop生态圈组件很多,所以,在建设之初一定要检查好各版本的兼容性.避免后期麻烦. 我的练习使用Had ...

  7. rootfs 制作

    最小 根文件系统 (1)/dev/console(终端控制台, 提供标准输入.标准输出以及标准错误) /dev/null (表示空设备终端, 所有写到这个文件中的数据都会被丢弃掉.) (2)init进 ...

  8. iOS - is missing from working copy

    解决方案:1.打开终端2.cd 到警告所提示的文件夹下3.执行命令svn rm --force 丢失文件的名称 丢失的文件太多批量处理:1.打开终端2.sudo find /Users/mac/Des ...

  9. 【leetcode】441. Arranging Coins

    problem 441. Arranging Coins solution1: class Solution { public: int arrangeCoins(int n) { ; ; while ...

  10. es6学习日记1

    1.let和const ES6新增了let命令,用来声明变量,用法类似于var ,但是声明的变量只在let命令所在代码块内有效. 例如: { let a = 10; var b = 1; } a // ...