多行并一行显示的两种方式(DB2)
2019独角兽企业重金招聘Python工程师标准>>>
一、简介
多行并作一行显示,在此介绍两种方式CTE递归,和XML函数。表数据如下:
ID NAME HOUSE
1 张三 普通住宅
2 张三 豪华别墅
3 张三 安置房
4 李四 安置房
5 李四 普通住宅
要显示的结果大约为:
NAME HOUSE
张三 普通住宅,豪华别墅,安置房
李四 安置房,普通住宅
二、CTE递归使用限制
递归查询就是通过对 CTE 自身的引用,从而启动递归逻辑的查询。递归查询需要遵循以下几个规则 :
递归查询和初始查询结果必须包含相同数量的数据列;
递归查询和初始查询结果数据列的、长度等必须一致;
递归查询不能包含 GROUP BY 或者 HAVING 子句;
递归查询不能包含 Outer Join ;
递归查询不能包含子查询 (Subquery);
递归查询必须用 UNION ALL 联结。
三、通过CTE递归方式
--给数据加上序号
with wa_RowNum(id,name,house,rn) as(select id,name,house,ROW_NUMBER() OVER(PARTITION BY name) from TTABLE
),
--CTE递归拼接house,序号最大的行拼接了所有的house数据
wa_addHouse(id,name,house,rn) as(--1作为递归入口select wr.id,wr.name,CAST(wr.house AS CLOB),wr.rn from wa_RowNum wr where wr.rn=1UNION ALLselect nt.id,nt.name,CAST(self.house||';'||nt.house AS CLOB),self.rn+1from wa_addHouse self,wa_RowNum nt where nt.name=self.name and self.rn+1=nt.rn
),
--过滤掉不需要的数据
wa_getMax(name,house) as(
select name,VARCHAR(house) from wa_addHouse wa where wa.rn in(select max(iwa.rn) from wa_addHouse iwa where iwa.name=wa.name)
)
select * from wa_getMax/*
四、XML函数方式
select * from wa_getMax;
select name,varchar(replace(replace(replace(xml2clob(xmlagg(xmlelement(NAME a, house||','))),'<A>',''),'</A>',''),'<A/>',''))
from TTABLE group by name
转载于:https://my.oschina.net/sandant/blog/371102
多行并一行显示的两种方式(DB2)相关推荐
- 在线直播源码,VUE 获奖名单滚动显示的两种方式
在线直播源码,VUE 获奖名单滚动显示的两种方式 第一种: 使用vue-seamless-scroll组件: 1.安装vue-seamless-scroll npm install vue-seaml ...
- 【Python】Python figure显示的两种方式
1. 两种方式: 终端输出图像 新窗口输出图像 2. 终端输出命令: %matplotlib inline 新窗口输出命令: %matplotlib qt5 注意此两个语句是命令行输入,若在spyde ...
- python命令行模式怎么输入_python获得命令行输入的参数的两种方式
外部直接执行python文件时,我们有时需要获得命令行的参数6ok免费资源网 获得命令行参数的两种方式6ok免费资源网 1.通过sys.argv6ok免费资源网 sys.argv:获得一个参数列表,第 ...
- Android中界面实现全屏显示的两种方式
在开发android的应用当中,我们会遇到将一些界面设置为全屏显示的格式,有两种实现的方法.其一是在Java代码中实现,其二是在配置文件中实现. 1. 在Java代码中设置 super.onCreat ...
- ActiViz学习点滴(四)——显示圆柱(两种方式构建圆柱体)
程序修改如下: vtkSphereSource sphere = vtkSphereSource.New(); sphere.SetCenter(5, 5, 5); vtkCylinderSource ...
- VUE 获奖名单滚动显示的两种方式
第一种: 使用vue-seamless-scroll组件: 1.安装vue-seamless-scroll npm install vue-seamless-scroll --save 2.使用 2- ...
- 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式
交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...
- 怎么把好几行弄成一行_将多行内容合并成一行的两种方式
在利用Unix操作系统在实现一些具体应用的时候,可能需要把某些显示的结果进行行与行之间的合并.如现在需要用Unix操作系统设计一个彩票软件,每一张彩票上最多可以打印五注内容.在Unix操作系统的数据文 ...
- Linux中vim编辑文件显示行号(临时和永久两种方式)
一.前言 在Linux中经常使用vim编辑器去修改文件,默认是不显示行号的,那如何显示呢?有临时和永久两种方式. 本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错, ...
最新文章
- Swing如何正确的处理界面中的线程(EDT)
- 微众WeCross 跨链平台(11)系统总结
- CodeForces - 1512G Short Task(欧拉筛求因子和)
- 矩阵的二范数_Python Numpy中的范数
- Java EE安全性API向前发展
- android定时循环,Android AlarmManager实现定时循环后台任务
- SQL Server安全(8/11):数据加密(Data Encryption)
- python 基础 - 4.15 re模块
- 文本处理命令系列——cut
- Eclipse中在refernced Libraries里面加jar包与在WEB-INF/lib下加jar包的区别
- 安装win7系统时,硬盘模式为IDE模式时安装成功,硬盘模式为AHCI模式时重启蓝屏或一直启动的问题,以及IDE模式与AHCI模式的区别!
- Eclipse设置运行内存大小
- 软件工程大一学年简单的总结一下
- SDN多控制器资源池的设计与实现
- TI-Nspire CX CAS图形计算器模拟器+操作指南
- 7.前端入门小工具之PS辅助
- SQL-Server数据库开发总结
- Stata画图——散点图与折线图
- 最新测绘资质的办理方案
- Python学习 day03