A表:id a1 a2
1 …… ……
2 …… ……
3 …… ……
…… …… ……B表:id b1
1 手机
1 笔记本
2 手机
3 手机
3 笔记本
3 平板
…… ……
其中A,B以id关联。
要得到:id a1 a2 b1
1 …… …… 手机,笔记本
2 …… …… 手机
3 …… …… 手机,笔记本,平板
…… …… …… ……求简单的方法实现,最好一句sql,就是把B表中的id对应的b1全部放在一个单元格里。求大神。

解决方案 »

  1.   

    select a.id ,wm_concat(b.b1) 
      from a
      left join b
        on a.id = b.id
      group by a.id;
      

  2.   

    with a as(select id from A),
         b as (select id,wm_concat(b1) w from B group by id)
         select distinct(a.id) id,b.w w from a left join b on a.id=b.id
      

  3.   


    select a.id,a.a1,a.a2,b.b1 from a join b on a.id = b.id
      

  4.   


    WITH t AS(
     SELECT 1 AS ID,'笔记本' AS b1 FROM dual UNION ALL
     SELECT 1 ,'手机' 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 UNION ALL
     SELECT 3,'手机' FROM DUAL
    )SELECT T.ID,WMSYS.WM_CONCAT(DISTINCT T.B1) FROM T GROUP BY ID;