decode()用法和此类似,oracle9i中也支持用case

解决方案 »

  1.   

    呵呵,请教在哪能拿到象SQL Server一样的联机帮助呢?
      

  2.   

    上面我是用了Decode,可感觉可读性太差,9i里面的case大致用法是怎样呢?
      

  3.   

    /************Oracle9i下脚本*****************/
    SELECT        
                    BeginTime,
                    tmpI2 = SUM(CASE WHEN (ISNULL(CallBegin, 0) < ISNULL(CallEnd, 0)) OR (ISNULL(AckBegin, 0) < ISNULL(AckEnd, 0)) THEN 1 ;
                                                 ELSE 0 ;
                                                 END case;), 
                    tmpI3 = SUM(CASE WHEN (ISNULL(AckBegin, 0) < ISNULL(AckEnd, 0)) AND (ISNULL(CallBegin, 1) = ISNULL(CallEnd, 0)) THEN 1 ;
                                                    ELSE 0 ;
                                                    END case;)
                FROM t1
      

  4.   

    不能用tmpI2 = SUM(CASE WHEN .....等,应改成SUM(CASE WHEN ..... as tmpI2
      

  5.   

    试试吧,应该可以的
    select begintime,sum(decode(sign(nvl(callbegin,0),nvl(callend,0)),-1,1,0)+sum(sign(nvl(ackbegin,0),nvl(ackend,0)),-1,1,0)),sum(decode(sign(nvl(ackbegin,0),nvl(ackend,0)),-1,decode(sign(nvl(callbegin,1),nvl(callend,0)),0,1,0))) into tmp1,tmp2,tmp3 from t1
      

  6.   

    callbegin和callend等都是date类型的如果用8i的话,应当是我上面的教本吧
    上面那段代码是接在下面的,
    insert into t3
      *****9i的话,应当就是小龙的代码吧
    我再测试一下