假如一个User表 字段
ID name description part 1 张三 描述(部分1) 1 1 张三 描述(部分2) 2 2 李四 描述 1 3 王五 描述 1
ID和part作为联合主键,由于description 字段可能很长,超过了varchar(4000)的范围,所以这种情况会分成多个part存储,如张三,分成了两个部分。
现在需要一条select语句,需要取出后,如果字段是多个part,那么就合并,得到如下结果:
ID name description 1 张三 描述(part1和2合并的完整描述) 2 李四 描述 3 王五 描述
实现SQL
select id, name, ltrim(sys_connect_by_path(description, ','), ',') from (select id, name, description, row_number() over(partition by id order by part) rn, count(*) over(partition by id) cnt from AAA -- 换成你的表名 ) a where level = cnt start with rn = 1 connect by prior id = id and prior rn = rn - 1 select id,name,wm_syswm_concat(description) from table group by id,name select id,name,WMSYS.WM_CONCAT(description) from table group by id,name