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


浙公网安备 33010602011771号