SELECT B.CALLERNO,'111',
 (select bb.name from BUS_RPT_TAGENTINFO bb
 where bb.AGENTID =B.CALLERNO 
 and bb.SUBCCNO = b.SUBCCNO) ,
 B.CALLEENO ,
(select name from BUS_RPT_TAGENTINFO where AGENTID =B.CALLEENO and SUBCCNO=--有问题b.SUBCCNO) "CalledName",

解决方案 »

  1.   

    你最好把表BUS_RPT_INTERCALL的字段都写上,再试
      

  2.   

    那是因为你子查询中的返回值大于1,当子查询的返回值超过一条是,会产生这错误。
    INSERT INTO BUS_RPT_INTERCALL
    SELECT B.CALLERNO,'111',
     (select bb.name from BUS_RPT_TAGENTINFO bb
     where bb.AGENTID =B.CALLERNO 
     and bb.SUBCCNO = b.SUBCCNO and rownum<2) ,
     B.CALLEENO ,
    (select name from BUS_RPT_TAGENTINFO where AGENTID =B.CALLEENO and SUBCCNO = b.SUBCCNO and rownum<2) "CalledName",
    B.CALLBEGIN,B.CALLEND,(B.CALLBEGIN - B.CALLEND)*24*3600 "TalkTime",B.SUBCCNO,B.VDN,B.MEDIATYPE
    FROM BUS_RPT_BILLLOGTMP B,BUS_RPT_TAGENTINFO T 
    WHERE B.CALLERNO = TO_CHAR(T.AGENTID(+)) and B.CALLEENO = TO_CHAR(T.AGENTID(+))
    AND CALLTYPE = 6 AND MEDIATYPE <> 2;
    改成这样应该可以
      

  3.   

    请问楼主,这样有什么意义:
    B.CALLERNO = TO_CHAR(T.AGENTID(+)) and B.CALLEENO = TO_CHAR(T.AGENTID(+))
      

  4.   

    B.CALLERNO = TO_CHAR(T.AGENTID(+)) and B.CALLEENO = TO_CHAR(T.AGENTID(+))
    这样写可以保证在B.CALLERNO没有匹配T.AGENTID时也可以选择出记录 langx2004(langx_lima):你的那种方式也不对,因为bb.AGENTID =B.CALLERNO 
     and bb.SUBCCNO = b.SUBCCNO 可以保证只返回一条记录,AGENTID和SUBCCNO是联合主建