有这样一张表:t_tabname address age
张三 北京 30
李四 杭州 29
王五 北京 28
马六 杭州 27
冯七 杭州 26我想得到这样的查询效果:
查询出每一个地址都有哪些人
例如
北京        张三 王五
杭州        李四 马六 冯七请问该户和查询,能够使用group by语句直接实现吗?谢谢

解决方案 »

  1.   

    select address,wm_concat(name) name
    from t_tab
    group by address
      

  2.   

    --写个通用一点的(10g以下可用)
    SELECT address, ltrim(MAX(sys_connect_by_path(NAME, ',')), ',')
      FROM (SELECT t.*, row_number() over(PARTITION BY address ORDER BY NAME) rn
              FROM t_tab t)
     START WITH rn = 1
    CONNECT BY PRIOR rn = rn - 1
     GROUP BY address;