表结构如下
用户ID :number
工作城市:varchar(2)数据如下 用户ID   , 意向工作城市
          1              北京
          1              上海
          1              深圳
          2               北京
          2               上海
          3              天津要求,查询出来的结果应为
          1             北京,上海,深圳
          2             北京,上海
          3             天津请问各位高手,一条SQL语句能写出来吗??

解决方案 »

  1.   

    --tryselect 用户ID,max(ltrim(sys_connect_by_path(意向工作城市,','),',')) 意向工作城市
    from
    (
    select 用户ID,意向工作城市,row_number over(partition by 用户ID order by 意向工作城市) rn from tablename
    )
    start with rn=1
    connect by prior rn=rn+1 and prior 用户ID=用户ID
    group by 用户ID
      

  2.   

    你的用户id-->userid,意向城市-->city,表名table
    select t.userid,substr(sys_connect_by_path(t.city,','),2)
    from   (select rownum rn,userid,city,
            lag(rownum) over(partition by userid order by city) rid
            from table ) t
    start with aaa is null
    connect by prior rn = rid
      

  3.   

    你的用户id-->userid,意向城市-->city,表名table
    select t.userid,substr(sys_connect_by_path(t.city,','),2)
    from   (select rownum rn,userid,city,
            lag(rownum) over(partition by userid order by city) rid
            from table ) t
    start with rid is null
    connect by prior rn = rid
    上面写错个地方~