select DECODE(TBL_PIS1.BUSIN_ACTY_CDE, 'EQTY', TBL_PIS1.AC_CATG, TBL_PIS1.BUSIN_ACTY_CDE) ACC_TYPE,
       DECODE(ACC_TYPE, 'CASH', 1, 'MARGIN', 2, 3) ACC_SEQ
from MC_INT_POST_SUMM TBL_PIS1错误信息:ORA-00904: "ACC_TYPE": ¿¿¿¿¿好像是说字段非法,或无效。哪位高手帮我解释下? 是不是别名ACC_TYPE在第二个decode语句里不能用啊?

解决方案 »

  1.   

    别名不能直接这样使用的。
    要么你在外面嵌套一层:
    select ACC_TYPE,DECODE(ACC_TYPE, 'CASH', 1, 'MARGIN', 2, 3) ACC_SEQ
    from (
    select DECODE(TBL_PIS1.BUSIN_ACTY_CDE, 'EQTY', TBL_PIS1.AC_CATG, TBL_PIS1.BUSIN_ACTY_CDE) ACC_TYPE,
          DECODE(ACC_TYPE, 'CASH', 1, 'MARGIN', 2, 3) ACC_SEQ
    from MC_INT_POST_SUMM TBL_PIS1 )
      

  2.   

    是的 ACC_TYPE这个时候的还是个不确定的东西呢
    还是使用前面的那个大长串吧 
      

  3.   

    请问为什么要在外面嵌套一个就可以了呢?嵌套在里面的时候,里面第二个decode语句里ACC_Type不是还是不能识别的吗?
      

  4.   

    举例:1
    select decode('a','a',3,4) t1,decode(t1,'a',3,5) from dual
     
    ORA-00904: "T1": 标识符无效举例:2SQL> select decode(t1,'a',3,5) from
      2  (select decode('a','a',3,4) t1 from dual);
     
    DECODE(T1,'A',3,5)
    ------------------
                     5
     
    举例:3
    SQL> select decode(decode('a','a',3,4),'a',3,5) from dual;
     
    DECODE(DECODE('A','A',3,4),'A'
    ------------------------------
                                 5
      

  5.   

    非常感谢,我试了其中一个果然可以用。 还有个问题:
    SELECT TBL_PIS1.CCY_CDE CURRENCY FROM MC_INT_POST_SUMM TBL_PIS1,
    DECODE(TBL_PIS1.BUSIN_ACTY_CDE, 'EQTY', TBL_PIS1.AC_CATG, TBL_PIS1.BUSIN_ACTY_CDE) ACC_TYPE,
    DECODE(DECODE(TBL_PIS1.BUSIN_ACTY_CDE, 'EQTY', TBL_PIS1.AC_CATG, TBL_PIS1.BUSIN_ACTY_CDE), 'CASH', 1, 'MARGIN', 2, 3) ACC_SEQ,
    'Credit' CR_DR,
    TBL_PIS1.ACT_POST_CR_INT MONTH_1_VALUE
    from MC_INT_POST_SUMM TBL_PIS1这个句子报ORA-00933错误,好像是命令未正确结束。这又是为啥呢
      

  6.   

    你的sql语句有问题 同一层次出现了两个from 
      

  7.   

    这行去掉FROM MC_INT_POST_SUMM TBL_PIS1
      

  8.   

    decode用法:
    例:deocde(条件,符合条件1,输出结果1,符合条件2,输出结果2,默认结果)
      

  9.   

    select DECODE(TBL_PIS1.BUSIN_ACTY_CDE, 'EQTY', TBL_PIS1.AC_CATG, TBL_PIS1.BUSIN_ACTY_CDE) ACC_TYPE, 
          DECODE(DECODE(TBL_PIS1.BUSIN_ACTY_CDE, 'EQTY', TBL_PIS1.AC_CATG, TBL_PIS1.BUSIN_ACTY_CDE), 'CASH', 1, 'MARGIN', 2, 3) ACC_SEQ 
    from MC_INT_POST_SUMM TBL_PIS1