需要自己编写一个函数来实现,函数要用到cursor游标。

解决方案 »

  1.   

    用自定义procedure,function实现,
      

  2.   

    首先创建一个函数:假设表名为tablename,用户字段为user,商品字段为commodityCREATE OR REPLACE FUNCTION get_str (p_user VARCHAR2)
       RETURN VARCHAR2
    IS
       CURSOR c_commodity
       IS
          SELECT commodity
            FROM tablename
           WHERE user = p_user;   v_commodity_str   VARCHAR2 (100);
    BEGIN
       FOR r_commodity IN c_commodity
       LOOP
          IF v_commodity_str IS NULL
          THEN
             v_commodity_str := r_commodity.commodity;
          ELSE
             v_commodity_str := v_commodity_str || ',' || r_commodity.commodity;
          END IF;
       END LOOP;   RETURN v_commodity_str;
    END;
    /然后执行查询:SELECT DISTINCT user,get_str(user) FROM tablename;
      

  3.   

    建表如下:
    create table dd
    (yh varchar(50),
     sp varchar(50)
    )查询:
    select yh,max(sys_connect_by_path(sp,',')) from 
    (
    select yh,sp,rn,lead(rn) over(partition by yh order by rn) rn1 
       from (
              select sp,yh,row_number() over(order by yh,sp desc) rn from dd
            )
            )
    start with rn1 is null
    connect by rn1=prior rn
    group by yh
      

  4.   

    忘了,上面的语句需在oracle92上运行
      

  5.   

    把同列不同行的数据放在同行,
    把同行不同列的数据放在同列,
    一向是sql的难题~~
      

  6.   

    如果是ORACLE 9i上一个SQL就可以实现了。
      

  7.   

    在sql server2000上经常作 ,大概思路就是,建立一个函数,把函数包含在一个group by查询。根本不用游标。
      

  8.   

    我想问一下在oracle9i里用sql怎么写?我也是初学者,请各位指点