文档章节

多行并一行显示的两种方式(DB2)

sand_ant
 sand_ant
发布于 2015/01/23 15:45
字数 440
阅读 61
收藏 0

一、简介

多行并作一行显示,在此介绍两种方式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=1
        UNION ALL
        select nt.id,nt.name,CAST(self.house||';'||nt.house AS CLOB),self.rn+1
                from 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


© 著作权归作者所有

sand_ant
粉丝 3
博文 35
码字总数 18706
作品 0
无锡
私信 提问
学习SQL【5】-数据更新

学习.png 数据的更新处理大体可以分为插入(INSERT)、删除(DELETE)和更新(UPDATE)三类,此外,还会给大家介绍数据库中用来管理数据更新的重要概念—事务。 一:数据的插入(INSERT语句)...

爱吃西瓜的番茄酱
2017/12/06
0
0
数据库的方向 - 行vs列(转自: IBM i 中国开发团队)

转载地址:https://www.ibm.com/developerworks/community/blogs/IBMi/entry/database?lang=en 原文链接:http://ibmsystemsmag.blogs.com/youandi/db2/ 数据库的方向 - 行vs列 如果你是一位......

sahadev
2016/09/01
0
0
opensuse linux环境下ibm_websphere和ibm_db2安装以及DB2数据迁移操

opensuse linux环境下ibmwebsphere和ibmdb2安装 ibm_websphere安装: 1、ibm官网下载免费版websphere,如下载文件名为BASETRIAL.agent.installer.linux.gtk.x86_64.zip的压缩文件。 2、在ope...

wangbo-osc
2015/07/28
0
0
[转]DB2 并发机制表格分析法

级别: 中级 齐克科 (qikeke@cn.ibm.com), 软件工程师, IBM Elaine Zhan (ezhan@cn.ibm.com), 软件咨询工程师, IBM 陈荔龙 (chenlil@cn.ibm.com), 软件工程师, IBM 2008 年 5 月 08 日 本文介...

穿越星辰
2009/03/20
248
0
DB2 9.7 新特性 - 内联 LOB 的使用

DB2 9.7 LOB 介绍 大对象(LOB),指 DB2 中的一类数据类型。它对应于 DB2 中的数据类型有三种:BLOB 数据类型存储二进制数据,比如图片。CLOB 数据类型存储字符数据,比如文本文件。DBCLOB ...

红薯
2010/08/08
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

JWT学习总结

官方 https://jwt.io 英文原版 https://www.ietf.org/rfc/rfc7519.txt 或 https://tools.ietf.org/html/rfc7519 中文翻译 https://www.jianshu.com/p/10f5161dd9df 1. 概述 JSON Web Token(......

冷基
今天
3
0
AOP的学习(1)

AOP 理解AOP编程思想(面向方法、面向切面) spring AOP的概念 方面 -- 功能 目标 -- 原有方法 通知 -- 对原有方法增强的方法 连接点 -- 可以用来连接通知的地方(方法) 切入点 -- 将用来插入...

太猪-YJ
今天
4
0
一张图看懂亮度、明度、光度、光亮度、明亮度

亮度、明度、光亮度,Luminance和Brightness、lightness其实都是一个意思,只是起名字太难了。 提出一个颜色模型后,由于明度的取值与别人的不同,为了表示区别所以就另想一个词而已。 因此在...

linsk1998
昨天
8
0
Python应用:python链表示例

前言 python链表应用源码示例,需要用到python os模块方法、函数和类的应用。 首先,先简单的来了解下什么是链表?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是...

python小白1
昨天
4
0
Source Insight加载源码

Source Insight是一个图形化的源代码查看工具(当然也可以作为编译工具)。如果一个项目的源代码较多,此工具可以很方便地查找到源代码自建的依赖关系。 1.创建工程 下图为Snort源代码的文件...

天王盖地虎626
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部