select (select tsec.acctbalance from TSECACCTSUBJ tsec where tsec.secacctno = tc.cardasn||'0A') cardbalance , (select tses.acctbalance from TSECACCTSUBJ tses where tses.secacctno = tc.uniid ) subbalance from TBASE_CUSTOMERS tc
我还想求出来 cardbalance+subbalance 应该怎么做?

解决方案 »

  1.   

    直接加
    SQL> select (select 1 from dual)+(select 2 from dual) from dual;(SELECT1FROMDUAL)+(SELECT2FROMDUAL)
    -----------------------------------
                                      3
      

  2.   


    如何记录很多的话,这样应该会十分的慢吧?oracle有没有比较方便的函数之类啊
      

  3.   

    那就要看你的sql是否可以优化了
      

  4.   

    select tsec.acctbalance+tses.acctbalance
    from TSECACCTSUBJ tsec,TSECACCTSUBJ tses,TBASE_CUSTOMERS tc
    where  tsec.secacctno = tc.cardasn||'0A' and tses.secacctno = tc.uniid 
      

  5.   

    select sum(a)
    from(
    select tsec.acctbalance a
    from TBASE_CUSTOMERS tc,TSECACCTSUBJ tsec
    where tsec.secacctno = tc.cardasn||'0A'
    union
    select tses.acctbalance a
    from TBASE_CUSTOMERS tc,TSECACCTSUBJ tses
    where tses.secacctno = tc.uniid)这样试试
      

  6.   

    这样的查询结果是不对的,LZ 是用TBASE_CUSTOMERS这个表与TSECACCTSUBJ 比较了两次,不同的字段. 
      

  7.   

    在sqlplus下看执行计划
    SQL> set autotrace traceonly;
    SQL> 执行的SQL
      

  8.   

    引用六楼修改一下,试试能否直接求出三个值select sum(cardbalance ),sum(subbalance) ,sum(cardbalance )+sum(subbalance ) as sum
    from 
    (
    select tsec.acctbalance cardbalance ,0 as subbalance 
    from TBASE_CUSTOMERS tc,TSECACCTSUBJ tsec 
    where tsec.secacctno = tc.cardasn||'0A' 
    union 
    select 0 as cardbalance , tses.acctbalance subbalance
    from TBASE_CUSTOMERS tc,TSECACCTSUBJ tses 
    where tses.secacctno = tc.uniid) 
    )
      

  9.   

    不是我希望的 我没有要sum(cardbalance ),sum(subbalance)