like this:
Select ptd.FEE_TYPE_CODE, sum(decode(FEE_TYPE_CODE ,'R',1,0)) as t1,sum(decode(FEE_TYPE_CODE ,'V',1,0)) as t2,....
From PAYMENT_TXN pt,PAYMENT_TXN_DETAILS ptd
Where pt.BUSINESS_TXN_KEY_REF = ptd.BUSINESS_TXN_KEY_REF
And ptd. BUSINESS_TXN_CODE = ‘V001M1’
And ptd. BUSINESS_TXN_SUBCODE  in (‘01’,’02’,’03’)
And FEE_TYPE_CODE = ‘R’
Group by ptd.FEE_TYPE_CODE;

解决方案 »

  1.   

    Select ptd.FEE_TYPE_CODE, count(*) as t1
    From PAYMENT_TXN pt,PAYMENT_TXN_DETAILS ptd
    Where pt.BUSINESS_TXN_KEY_REF = ptd.BUSINESS_TXN_KEY_REF
    And ptd. BUSINESS_TXN_CODE = ‘V001M1’
    And ptd. BUSINESS_TXN_SUBCODE  in (‘01’,’02’,’03’)
    And FEE_TYPE_CODE in(‘R’,‘V’,...) --放在一起不行么?
    Group by ptd.FEE_TYPE_CODE
      

  2.   

    写个过程,把And FEE_TYPE_CODE = ‘V’作为变量
    游标循环两次即可
    不管怎么样,你的SQL总是都是要执行两遍的,只不过循环执行而已。。
      

  3.   

    把你的条件,当作参数传入不就可以了嘛
    type g_cursor is ref cursor;
    create or replace procedure aaa(FEE_TYPE_CODE in varchar2,rs out g_cursor)
    as
    str varchar2(400);
    begin
    str='Select ptd.FEE_TYPE_CODE, count(*) as t2
    From PAYMENT_TXN pt,PAYMENT_TXN_DETAILS ptd
    Where pt.BUSINESS_TXN_KEY_REF = ptd.BUSINESS_TXN_KEY_REF
    And ptd. BUSINESS_TXN_CODE = ‘V001M1’
    And ptd. BUSINESS_TXN_SUBCODE  in (‘01’,’02’,’03’)
    And FEE_TYPE_CODE = '''||FEE_TYPE_CODE||'''
    Group by ptd.FEE_TYPE_CODE'
    end;
    其他的是一样的
      

  4.   

    这是一个特别的方法,我用了zmgowin(隐者(龙祖宗)) 的方法,能正确返回结果。to zmgowin(隐者(龙祖宗)) 谢谢,你一定是一个Oracle高手,希望能多请教!
      

  5.   

    我写的sql里面后面加了And FEE_TYPE_CODE = ‘R’这里有问题,注意一下就是了
      

  6.   

    to bluelamb(bluelamb)定义成字符串str怎么执行?
      

  7.   

    execute immediate v_sql_str;
      

  8.   

    to  zmgowin(隐者(龙祖宗)) 
    谢谢,我注意到了。
    能给我你的邮箱吗?
    我这几天在做一些报表,要写很多存储过程,希望有难题能像你请教!
      

  9.   

    有返回值的话:
    execute immediate v_sql_str into v_col1,v_col2...;
      

  10.   

    to  bzszp(SongZip) 但是定义的存储过程中,不是一个有效的SQL语句呀,它只是一条字符串呀!
      

  11.   

    例子:
    15:22:10 SQL> declare
    15:22:13   2  v_sql varchar2(200);
    15:22:14   3  v_col1 tb.col1%type;
    15:22:27   4  v_col2 tb.col2%type;
    15:22:34   5  begin
    15:22:37   6  v_sql:='select col1,col2 from tb where rownum=1';
    15:22:37   7  execute immediate v_sql into v_col1,v_col2;
    15:22:37   8  dbms_output.put_line(v_col1||';'||v_col2);
    15:22:37   9  end;
    15:22:37  10  /
    1;aaaPL/SQL 过程已成功完成。已用时间:  00: 00: 00.47
    15:22:37 SQL> select col1,col2 from tb where rownum=1;COL1       COL2
    ---------- ------------------------------
    1          aaa已用时间:  00: 00: 00.15
    15:22:51 SQL>
      

  12.   

    to  bzszp(SongZip)谢谢,明白了。