多行并一行显示的两种方式(DB2)
来源:互联网 发布:nba体测数据之最2016 编辑:程序博客网 时间:2024/06/05 08:12
一、简介
多行并作一行显示,在此介绍两种方式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
- 多行并一行显示的两种方式(DB2)
- 使用c#连接到IBM db2的两种方式
- Android-打开系统相机并拍照两种显示方式。
- DB2多行转一行【XML方式】
- 用C++的方式读取并显示文件的每一行
- Android全屏显示的两种方式
- Android全屏显示的两种方式
- Android全屏显示的两种方式
- Spinner 显示的两种方式
- RadioButton的两种显示方式
- dialog全局显示的两种方式
- ExtJS显示两种方式
- 一行显示多个div 并居中显示
- jsp页面一行只显示两条记录的算法
- 依赖注入的两种方式并附上例子
- 依赖注入的两种方式并附上例子
- viewpager两种方式实用显示方式
- python 读取并显示图片的两种方法
- 屏蔽右键菜单+右键事件 js
- 【Android开发学习33】PopupWindow之显示顶层对话框
- oracle中V$session 表中各个字段的中文说明
- 动态改变PopupWindow大小
- JDBC插入操作时,通过return返回主键
- 多行并一行显示的两种方式(DB2)
- 416657380骗我500钱 骗子
- 严重: Cannot create PoolableConnectionFactory (ORA-01017: invalid username/password; logon denied
- GridView绑定数据库中bit型的数据显示成0和1而不是True和False
- stack
- viewDidLoad, viewWillDisappear, viewWillAppear等区别及各自的加载顺序
- Windows I/O模型、同步/异步、阻塞/非阻塞
- 水晶报表(使用VS2010配合水晶报表)
- ipad上如何进行页面调试