WITH TT AS
 (SELECT 1 ID
    FROM DUAL
  UNION ALL
  SELECT 2 ID
    FROM DUAL
  UNION ALL
  SELECT 3 ID
    FROM DUAL
  UNION ALL
  SELECT 4 ID
    FROM DUAL),
T AS
 (SELECT 1 ID, 'ZS' NM
    FROM DUAL
  UNION ALL
  SELECT 2 ID, 'ZS' NM
    FROM DUAL
  UNION ALL
  SELECT 2 ID, 'LS' NM
    FROM DUAL
  UNION ALL
  SELECT 3 ID, 'ZS' NM
    FROM DUAL
  UNION ALL
  SELECT 3 ID, 'WW' NM
    FROM DUAL)
SELECT TT.ID, T3.NM
  FROM TT,
       (SELECT T2.ID, ltrim(max(SYS_CONNECT_BY_PATH(t2.NM, '||')), '||') NM
          FROM (SELECT T.*, ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) RN
                  FROM T) T2
        connect by prior rn = rn - 1
               and prior t2.id = t2.id
         GROUP BY T2.ID) T3
 WHERE TT.ID = T3.ID(+);

解决方案 »

  1.   


    WITH A AS
     (SELECT 1 ID FROM DUAL  UNION ALL
      SELECT 2 ID FROM DUAL  UNION ALL
      SELECT 3 ID FROM DUAL ),
    B AS
     (SELECT 1 ID, '张三' name FROM DUAL UNION ALL
      SELECT 2, '李四' FROM DUAL UNION ALL
      SELECT 2, '张三' FROM DUAL UNION ALL
      SELECT 3, '王五' FROM DUAL UNION ALL
      SELECT 3, '李四' FROM DUAL)
    SELECT A.ID, REPLACE(WMSYS.WM_CONCAT(B.NAME), ',', '|')
      FROM A, B
     WHERE A.ID = B.ID(+)
     GROUP BY A.ID
      

  2.   

    select b.id, b.name
      from 表A a,
           (select id, replace(wm_concat(name), ',', '||') as name
              from 表B
             group by id) b
     where a.id = b.id;
      

  3.   

    to_char(REPLACE(WMSYS.WM_CONCAT(B.NAME), ',', '||'))
      

  4.   

      select id, replace(wm_concat(name), ',', '||')
        from (select a.id, b.name from a, b where a.id = b.id) t
       group by id
      

  5.   

    辅助参考:http://database.51cto.com/art/201010/231126.htmoracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oracle wm_concat(column)函数实现字段合并,如果您对oracle wm_concat(column)函数使用方面感兴趣的话,不妨一看。shopping:-----------------------------------------u_id       goods            num------------------------------------------1                苹果                22                 梨子               51                 西瓜               43                 葡萄               13                香蕉                11               橘子                 3=======================想要的结果为:--------------------------------u_id          goods_sum____________________1              苹果,西瓜,橘子2              梨子3              葡萄,香蕉---------------------------------select u_id, wmsys.wm_concat(goods) goods_sum   from shopping   group by u_id  想要的结果2:--------------------------------u_id          goods_sum____________________1              苹果(2斤),西瓜(4斤),橘子(3斤)2              梨子(5斤)3              葡萄(1斤),香蕉(1斤)---------------------------------使用oracle wm_concat(column)函数实现:select u_id, wmsys.wm_concat(goods || '(' || num || '斤)' ) goods_sum   from shopping   group by u_id   
      

  6.   

    wm_concat(column)  复习一下
      

  7.   


    select t2.id id, replace(wm_concat(t2.name),',',' | ') name from t_test2 t2,t_test1 t1 where t1.id=t2.id(+) group by t2.id;