oracle 合并多行数据

View Code
 1 WITH tab AS(
 2 select '01' no,'ss' name, 10 jiner,'麦子' you from dual union all
 3 select '02' no,'dd' name, 11 jiner,'萝卜' you from dual union all
 4 select '03' no,'cc' name, 9 jiner,'大豆' you from dual union all
 5 select '01' no,'ss' name, 10 jiner,'白菜' you from dual)
 6 SELECT a.no, a.name, a.jiner, ltrim(MAX(sys_connect_by_path(you, ',')), ',') you
 7 FROM (SELECT row_number() over(PARTITION BY a.no, a.name, a.jiner 
 8          ORDER BY a.no, a.name, a.jiner) rn,a.*
 9           FROM tab a) a
10 START WITH rn = 1
11 CONNECT BY PRIOR rn = rn - 1 AND
12            a.no = PRIOR a.no AND
13            a.name = PRIOR a.name AND
14            a.jiner = PRIOR a.jiner
15 GROUP BY a.no, a.name, a.jiner

我自己修改的例子

View Code
1  SELECT a.pmeps,a.pmpbs, to_nclob(ltrim(MAX(sys_connect_by_path(to_char(pmkml), ',')), ',')) pmkml
2 FROM (SELECT row_number() over(PARTITION BY  a.pmeps, a.pmpbs 
3          ORDER BY  a.pmeps, a.pmpbs) rn,a.*
4           FROM placemark a) a
5 START WITH rn = 1
6 CONNECT BY PRIOR rn = rn - 1 AND
7            a.pmeps = PRIOR a.pmeps AND
8            a.pmpbs = PRIOR a.pmpbs
9 GROUP BY  a.pmeps, a.pmpbs 

 

posted @ 2013-04-25 10:24  ralflql  阅读(112)  评论(0)    收藏  举报