最近编码过程中出现了group by后,某些列会有多个值,而我需要把这些多个值的列进行拼接的情况,和大家分享一下。

有如下表student:

我们希望以class分组,每组的信息平铺,效果如下

分组首先想到的肯定是group by:

select * from student s group by s.class;

我们会发现这样会报错,因为name和age有多个值,这个时候我们就可以使用wm_concat()方法来解决。

select wm_concat(s.name),wm_concat(s.age),s.class from student s gruop by s.class;

但是这个写法又出现了一个新的问题,你会发现name和age这列的结果是

只需要把wm_concat前面加一个to_char就好了,而且结果就是上面想要的结果。

select to_char(wm_concat(s.name)) as name,
to_char(wm_concat(s.age)) as age,
s.class
from student s
gruop by s.class;
---------------------
还有一个函数LISTAGG(‘参数一’,’参数二’),这个函数和wm_comcat的作用类似,第一个参数是字段,第二个参数是多个值之间的分隔符,但是用法有些不同,例子如下:

select listagg(s.name,'-')within group(order by class) as name,
to_char(wm_concat(s.age)),
s.class
from student s
gruop by s.class;
---------------------

来源:https://blog.csdn.net/yufeng1397/article/details/78672607

oracle在group by时某列有多个值的拼接的更多相关文章

  1. Oracle查询结果中:一列中相同的值或一列中重复的值,只显示一次

    http://www.itpub.net/thread-1768915-1-1.html 问题: CREATE TABLE test(ob_id VARCHAR(32),ob_name VARCHAR ...

  2. Oracle中group by用法

    Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总 ...

  3. Oracle中group by 的扩展函数rollup、cube、grouping sets

    Oracle的group by除了基本使用方法以外,还有3种扩展使用方法,各自是rollup.cube.grouping sets.分别介绍例如以下: 1.rollup 对数据库表emp.如果当中两个 ...

  4. Oracle 使用序列实现自增列 及重置序列

    序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生成的,必须 ...

  5. Oracle Schema Objects——Sequences(伪列:nextval,currval)

    Oracle Schema Objects 序列的作用 许多的数据库之中都会为用户提供一种自动增长列的操作,例如:在微软的Access数据库之中就提供了一种自动编号的增长列(ID列).在oracle数 ...

  6. oracle 中GROUP BY的用法

    转自:http://blog.csdn.net/basenet855x/article/details/6694150 问题: select item.itemnum,item.in1,item.in ...

  7. 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式值

    问题描述:在SQL SERVER 2008中,向数据表中字段插入数据时,会报错,错误如下: 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'OrderList' 中的标识列插入显式 ...

  8. sqlserver 插入数据时异常,仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'XXXXX.dbo.XXXXXXXXX'中的标识列指定显式值。

    INSERT INTO XXXXXXXXX.dbo.XXXXXXXXX select * from XXXXXXXXX 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'X ...

  9. (转)Oracle 在Drop表时的Cascade Constraints

    Oracle 在Drop表时的Cascade Constraints 假设A为主表(既含有某一主键的表),B为从表(即引用了A的主键作为外键).则当删除A表时,如不特殊说明,则 drop table  ...

随机推荐

  1. hihocoder 1251 Today is a rainy day ( 15年北京 C、暴力 )

    题目链接 题意 : 一串数字变成另一串数字,可以单个数字转变,或者一类数字转变,问最少操作次数 分析 : 15年北京赛区的银牌题 首先有一个点需要想明白.或者猜得到 即最优的做法肯定是先做完 2 操作 ...

  2. codeforces555B

    Case of Fugitive CodeForces - 555B Andrewid the Android is a galaxy-famous detective. He is now chas ...

  3. Jmeter(十)断言

    断言是我们在做自动化测试中常用的一个功能,用于检查测试中响应数据是否符合预期. 使用断言的目的:在request的返回层面增加一层判断机制:因为request成功了,并不代表结果一定正确. 下面我们就 ...

  4. hadoop+zookeeper+hbase伪分布式安装

    基本安装步骤 安装包下载 从大数据组件下载地址下载以下组件安装包 hadoop-2.6.0-cdh5.6.0.tar.gz hbase-1.0.0-cdh5.6.0.tar.gz zookeeper- ...

  5. Leetcode题目33.搜索旋转排序数组(中等)

    题目描述: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在 ...

  6. PHP反序列化总结

    之前遇到过很多次php反序列化相关的内容,总结一下. (反)序列化给我们传递对象提供了一种简单的方法.serialize()将一个对象转换成一个字符串,unserialize()将字符串还原为一个对象 ...

  7. php项目权限系统设计

    原文地址:https://blog.csdn.net/u013090676/article/details/77893237 说起php的权限,很多人都容易想起rbac,这里不多介绍.下面介绍一种通用 ...

  8. SRS之SrsServer::cycle()

    1. SrsServer 相关类定义 1.1 SrsServer 类定义 /** * SRS RTMP server, initialize and listen, * start connectio ...

  9. LC 807. Max Increase to Keep City Skyline

    In a 2 dimensional array grid, each value grid[i][j] represents the height of a building located the ...

  10. Linux - 加密打包

    tar 加密打包 压缩 tar -czvf /path/to/file.tar.gz file 解压 tar -xzvf /path/to/file.tar.gz /path/to 加密压缩 tar ...