多行并一行显示的两种方式(DB2)
一、简介
多行并作一行显示,在此介绍两种方式CTE递归,和XML函数。表数据如下:
ID NAME HOUSE
1 张三 普通住宅
2 张三 豪华别墅
3 张三 安置房
4 李四 安置房
5 李四 普通住宅
要显示的结果大约为:
NAME HOUSE
张三 普通住宅,豪华别墅,安置房
李四 安置房,普通住宅
递归查询就是通过对 CTE 自身的引用,从而启动递归逻辑的查询。递归查询需要遵循以下几个规则 :
递归查询和初始查询结果必须包含相同数量的数据列;
递归查询和初始查询结果数据列的、长度等必须一致;
递归查询不能包含 GROUP BY 或者 HAVING 子句;
递归查询不能包含 Outer Join ;
递归查询不能包含子查询 (Subquery);
递归查询必须用 UNION ALL 联结。
select * from wa_getMax;select name, varchar(replace(replace(replace(xml2clob(xmlagg(xmlelement(NAME a, house||','))),'<A>',''),'</A>',''),'<A/>',''))from TTABLE group by name