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)相关推荐

  1. 在线直播源码,VUE 获奖名单滚动显示的两种方式

    在线直播源码,VUE 获奖名单滚动显示的两种方式 第一种: 使用vue-seamless-scroll组件: 1.安装vue-seamless-scroll npm install vue-seaml ...

  2. 【Python】Python figure显示的两种方式

    1. 两种方式: 终端输出图像 新窗口输出图像 2. 终端输出命令: %matplotlib inline 新窗口输出命令: %matplotlib qt5 注意此两个语句是命令行输入,若在spyde ...

  3. python命令行模式怎么输入_python获得命令行输入的参数的两种方式

    外部直接执行python文件时,我们有时需要获得命令行的参数6ok免费资源网 获得命令行参数的两种方式6ok免费资源网 1.通过sys.argv6ok免费资源网 sys.argv:获得一个参数列表,第 ...

  4. Android中界面实现全屏显示的两种方式

    在开发android的应用当中,我们会遇到将一些界面设置为全屏显示的格式,有两种实现的方法.其一是在Java代码中实现,其二是在配置文件中实现. 1. 在Java代码中设置 super.onCreat ...

  5. ActiViz学习点滴(四)——显示圆柱(两种方式构建圆柱体)

    程序修改如下: vtkSphereSource sphere = vtkSphereSource.New(); sphere.SetCenter(5, 5, 5); vtkCylinderSource ...

  6. VUE 获奖名单滚动显示的两种方式

    第一种: 使用vue-seamless-scroll组件: 1.安装vue-seamless-scroll npm install vue-seamless-scroll --save 2.使用 2- ...

  7. 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式

    交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...

  8. 怎么把好几行弄成一行_将多行内容合并成一行的两种方式

    在利用Unix操作系统在实现一些具体应用的时候,可能需要把某些显示的结果进行行与行之间的合并.如现在需要用Unix操作系统设计一个彩票软件,每一张彩票上最多可以打印五注内容.在Unix操作系统的数据文 ...

  9. Linux中vim编辑文件显示行号(临时和永久两种方式)

    一.前言   在Linux中经常使用vim编辑器去修改文件,默认是不显示行号的,那如何显示呢?有临时和永久两种方式.     本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错, ...

最新文章

  1. Swing如何正确的处理界面中的线程(EDT)
  2. 微众WeCross 跨链平台(11)系统总结
  3. CodeForces - 1512G Short Task(欧拉筛求因子和)
  4. 矩阵的二范数_Python Numpy中的范数
  5. Java EE安全性API向前发展
  6. android定时循环,Android AlarmManager实现定时循环后台任务
  7. SQL Server安全(8/11):数据加密(Data Encryption)
  8. python 基础 - 4.15 re模块
  9. 文本处理命令系列——cut
  10. Eclipse中在refernced Libraries里面加jar包与在WEB-INF/lib下加jar包的区别
  11. 安装win7系统时,硬盘模式为IDE模式时安装成功,硬盘模式为AHCI模式时重启蓝屏或一直启动的问题,以及IDE模式与AHCI模式的区别!
  12. Eclipse设置运行内存大小
  13. 软件工程大一学年简单的总结一下
  14. SDN多控制器资源池的设计与实现
  15. TI-Nspire CX CAS图形计算器模拟器+操作指南
  16. 7.前端入门小工具之PS辅助
  17. SQL-Server数据库开发总结
  18. Stata画图——散点图与折线图
  19. 最新测绘资质的办理方案
  20. Python学习 day03

热门文章

  1. java split函数报错
  2. 201621123058《java程序设计》第二周学习总结
  3. ASP.NET里创建Microsoft Word文档
  4. 《构建之法》阅读笔记04
  5. sqlite学习笔记5:插入数据,查询数据和删除数据
  6. 软件开发报价的计算方法[转载]
  7. [转]删除表中重复记录
  8. C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef
  9. 小程序canvan画布,现两张图片合成一张,并保存到本地
  10. Xcode12快捷键配置