条件是userdepid的一个字符串如“170,11,......”

解决方案 »

  1.   

    SELECT users.userid ,users.username ,departments.depname ,
    count(email.emailuserid) FROM users,departments,email
    WHERE userdepid=depid(+) AND userid=emailuserid(+) AND userdepid ='170'
    GROUP BY users.userid ,users.username ,departments.depname
      

  2.   

    userdepid ='170',我这儿可是一个字符串"170,11,23"包括多个部门ID,怎么办?
      

  3.   

    参考以下:
    create or replace type mytabletype as table of number;
    /create or replace function strtab(p_str in varchar2)
    return mytabletype
    as
    lstr varchar2(1000) default p_str||',';
    ln   number;
    ldata   mytabletype:=mytabletype();
    begin
    loop
      ln:=instr(lstr,',');
      exit when (nvl(ln,0)=0);
      ldata.extend;
      ldata(ldata.count):=ltrim(rtrim(substr(lstr,1,ln-1)));
      lstr:=substr(lstr,ln+1);
    end loop;
    return ldata;
    end;
    /SQL> select * from table(cast(strtab('11,12,13') as mytabletype));COLUMN_VALUE
    ------------
              11
              12
              13SQL> create table bb(id varchar2(2),name varchar2(10));Table createdSQL> insert into bb values('11','张三');1 row insertedSQL> insert into bb values('12','李四');1 row insertedSQL> insert into bb values('13','王五');1 row insertedSQL> select * from bb where id in (select * from table(cast(strtab('11,12,13') as mytabletype)));ID NAME
    -- ----------
    11 张三
    12 李四
    13 王五
      

  4.   

    SELECT users.userid , users.username, departments.depname, count(email.emailuserid)
    FROM users , departments , email
    WHERE users.userdepid = departments.depid
          AND users.userid = emailuserid
          AND userdepid IN ('170','80')
    GROUP BY 
          users.userid , users.username,departments.depname
      

  5.   

    SELECT users.userid ,users.username ,departments.depname ,
    count(email.emailuserid) FROM users,departments,email
    WHERE userdepid=depid(+) AND userid=emailuserid(+) AND userdepid  IN ('170','80')
    GROUP BY users.userid ,users.username ,departments.depname