表A中有id和columnname,表B是数据表
想要达到这样的效果
select sum(decode(sfzjlx,'',0,1)+decode(gmsfzh,'',0,1)+decode(xm,'',0,1)+decode(xb,'',0,1)) from V_M_WZD_ZD where xzqh like '650203001001%';
sfzjlx,gmsfzh,xm,xb是存在表A中,我想动态的把他们放在语句中对应的位置。

解决方案 »

  1.   

    你是需要动态的执行吗?要是动态执行可以这样:
    declare
    var1 varchar2(500);
    value1  varchar2(30);
    value2  varchar2(30);
    value3  varchar2(30);
    value4  varchar2(30);begin
    var1 := 'select sum(decode(:1, '', 0, 1) + decode(:2, '', 0, 1) +
               decode(:3, '', 0, 1) + decode(:4, '', 0, 1))
       from V_M_WZD_ZD
       where xzqh like '650203001001%' '
    value1:='sfzjlx';
    value2:='gmsfzh';
    value3:='xm';
    value4:='xb';
    EXECUTE IMMEDIATE var1  using  value1,value2,value3,value4
    end;
      

  2.   

    你这个地方value1,value2,value3,value4的值都是固定的,我想的是可以从表A中提取出来。
      

  3.   

    'select sum(decode('+sfzjlx+','',0,1)+decode('+gmsfzh+','',0,1)+decode('+xm+','',0,1)+decode('+xb+','',0,1)) from V_M_WZD_ZD where xzqh like '650203001001%';'