多个值合并成一个字段oracle排序,Oracle之多行记录变一行记录,行变列,并排序(wmsys.wm_concat)...
原帖:http://www.cnblogs.com/nayitian/p/3231734.html
wmsys.wm_concat
Definition: The Oracle PL/SQL WM_CONCAT function is used to aggregate data from a number of rows into a single row, giving a list of data associated with a specific COMMENT_BODY. In effect, it cross-tabulates a comma delimited list.
Note that WM_CONCAT is undocumented and unsupported by Oracle, meaning it should not be used in production systems. The LISTAGG function, which can produce the same output asWM_CONCAT is both documented and supported by Oracle.
1. 现有数据结构
BBSDETAIL表(主表)
DETAIL_ID NOT NULL NUMBER 主键
TITLE NOT NULL VARCHAR2(100)
BBSCOMMENT表(从表)
DETAIL_ID NOT NULL NUMBER 外键
COMMENT_BODY NOT NULL VARCHAR2(500)
COMMENT_TIME NOT NULL DATE
2. 实现功能一(从表多行记录合并为一行,不要求排序)
--多行合并为一行,不要求排序
select DETAIL_ID,wmsys.wm_concat('{'||COMMENT_BODY||'}')
from BBSCOMMENT
group by DETAIL_ID;
输出:
13859 {东西好,送货快 },{好 },{物流有些慢 }
14938 {卖家还是挺热心的,以后再来 },{东西不错 }
3. 实现功能二(从表多行记录合并为一行后,与主表做一连接)
--将上述SQL语句与主表做一个连接查询
select bd.DETAIL_ID,TITLE,bcm.COMMENT_INFO
from BBSDETAIL bd,(select DETAIL_ID,wmsys.wm_concat('{'||COMMENT_BODY||'}') as COMMENT_INFO from BBSCOMMENT group by DETAIL_ID) bcm
where bd.DETAIL_ID=bcm.DETAIL_ID(+);
输出:
13859 苏泊尔电压力锅配件 {东西好,送货快 },{好 },{物流有些慢 }
14938 Nike/耐克男性跑步鞋跑步 {卖家还是挺热心的,以后再来 },{东西不错 }
4. 实现功能三(从表多行记录合并为一行,并按评价时间排序)
--多行合并为一行,要求排序(最新的评论在前面)
select DETAIL_ID, max(r)
from (select DETAIL_ID, wmsys.wm_concat(COMMENT_BODY||'('||to_char(COMMENT_TIME,'yyyy-mm-dd hh:mi:ss')||')')
OVER(PARTITION BY DETAIL_ID ORDER BY COMMENT_TIME desc) r from BBSCOMMENT)
group by DETAIL_ID;
输出:
13859 东西好,送货快(2013-02-19 06:27:37),好(2012-01-14 02:23:46),物流有些慢(2012-01-01 12:00:25)
14938 卖家还是挺热心的,以后再来(2011-11-27 05:28:27),东西不错(2011-10-11 05:09:06)
5. 实现功能四(行变列:分两列显示从表两种汇总结果,排序,并保证两列中数据的对应关系)
--分两列显示两种汇总结果,并排序,保证对应关系
select DETAIL_ID,COMMENT_TIME,COMMENT_BODY from (
select
DETAIL_ID,
WMSYS.WM_CONCAT(to_char(COMMENT_TIME,'yyyy-mm-dd hh:mi:ss'))
OVER(PARTITION BY DETAIL_ID ORDER BY COMMENT_TIME) COMMENT_TIME,
WMSYS.WM_CONCAT('{'||COMMENT_BODY||'}')
OVER(PARTITION BY DETAIL_ID ORDER BY COMMENT_TIME) COMMENT_BODY,
row_number() OVER(PARTITION BY DETAIL_ID ORDER BY COMMENT_TIME desc) rs
from BBSCOMMENT) where rs=1;
输出:
13859 2013-02-19 06:27:37,2012-01-14 02:23:46,2012-01-01 12:00:25 {东西好,送货快},{好},{物流有些慢}
14938 2011-11-27 05:28:27,2011-10-11 05:09:06 {卖家还是挺热心的,以后再来},{东西不错}
多个值合并成一个字段oracle排序,Oracle之多行记录变一行记录,行变列,并排序(wmsys.wm_concat)...相关推荐
- oracle数据列转行排序,oracle 列转行函数 WMSYS.WM_CONCAT 排序不规则处理
业务中做报表,需要将一列列数据汇总成一行,然后汇总,如下: 需要将每个产品进行汇总,通过ichartjs进行展示,图表中需要数据的顺序是: var data = [ { name : '产品1', v ...
- [Pandas技巧] 多列值合并成一列
美图欣赏2022/07/28 在平时的需求开发中涉及到将多列值合并为一列值的操作,通过查阅相关资料特此记录以下方法,方便日后学习复盘 import pandas as pd import numpy ...
- 一对多查询,合并成一条数据
一对多查询,合并成一条数据 举例:一个产品对应多个型号,把多个型号查询出来显示在一个字段下面.显示出一条数据. 步骤: 1:创建产品表: 2:创建型号表: 思路: 先写出不含产品型号的查询语句, 然后 ...
- group by很多字段是不是会很慢_3分钟短文 | MySQL在分组时,把多列合并为一个字段!
引言 今天我们来说一个MySQL查询的例子,比如有一个统计需求, 分组后的数据,我们知道只能使用聚合函数进行统计, 那如果要根据分组约定,将一系列的值合并到单个字段显示出来, 应该怎么写呢? 学习时间 ...
- 两个无序单链表,排序后合并成一个有序链表
两个无序单链表,排序后合并成一个有序链表 算法思想:用冒泡法,对链表1和2进行排序,对排序后的两个链表,从小到大进行循环,装入链表3中. #include<stdio.h> #includ ...
- 不入oracle数据库,Oracle数据库之操作符及函数
一.操作符: 1.分类: 算术.比较.逻辑.集合.连接: 2.算术操作符: 执行数值计算: --工资加1000 select empno,ename,job,sal+1000 from emp; 3. ...
- oracle内置函数 wmsys.wm_concat使用
函数名:wmsys.wm_concat 作用:以逗号分隔连接列的值 oracle 10g引入.使用时直接用wm_concat也可以. 以下介绍一些实际使用的状况.介绍实际Case前先建立一个测试tab ...
- 【Oracle】Oracle GoldenGate简介及搭建过程
GoldenGate公司简介 GoldenGate公司专注于数据同步领域,是实现数据同步技术的领导者.至2007年,在全球35个国家售出超过2000个许可证,客户分布在政府.银行.电信.证券.传媒.医 ...
- oracle 11 wm concat,【Oracle开发】关于11.2上WMSYS.WM_CONCAT的workaround
有很多人问关于新版本中WMSYS.WM_CONCAT函数无法使用的问题. 对于该函数,Oracle官方的态度是其从来没有将该函数列入任何官方文档中,这个函数仅仅是让Oracle Dev研发在针对内部对 ...
最新文章
- Ubuntu12.04 安装MySQL简单步骤
- MySQL 第七天(核心优化一)
- python中title用法_在CSV fi中使用Title()
- Chrome 将内置 QR 扫码共享页面功能
- mysql导出excel出乱码_Mysql中文乱码以及导出为sql语句和Excel问题解决方法[图文]...
- C#.NET分别以GET和POST方式抓取远程页面
- RocketMq在windows下安装
- [译]利用贝叶斯推理做硬件故障率的准实时预测
- 世界上最好玩的6种表情符号编程语言
- 宋宝华:为了不忘却的纪念,评Linux 5.13内核
- 电动机正反转继电器控制系统
- linux中如何升级驱动程序,Redhat 如何升级显卡驱动?
- 手机RAM、ROM和储存卡的那些事
- 获取高德POI(关键词搜索法 多边形搜索法 周边搜索法)综合运用 2022新版高德poi下载
- c语言三种循环结构特点,c语言循环结构(c语言循环结构特点)
- Uber Go 语言编程规范:使用 go.uber.org/atomic
- 操作系统——可变分区空闲空间管理
- 内网渗透思路10之SPN拿下域控
- flink 相关资料
- [Alpha] Scrum Meeting 6 - TEAM LESS ERROR
热门文章
- 辨异 —— 单词(同义词)的辨异
- Python技巧——list comprehension 与 functools.reduce
- join left semi_Hive的left join、left outer join和left semi join三者的区别
- python装饰器带参数函数_python带参数装饰器的两种写法
- 找出最具竞争力的子序列_每日算法系列【LeetCode 376】摆动序列
- python公开课免费-公开课 | Python大牛免费带你4天入门Python
- python画三维图-Python基于matplotlib实现绘制三维图形功能示例
- python和c语言的区别-C语言、Java语言和python语言的区别在哪里
- 在线语音识别_腾讯云在线语音识别_在线语音识别成文字 - 云+社区 - 腾讯云
- www.yaxjf.com+m.php,linux运维架构--PHP开发-零基础学习PHP视频教程