select b.bmh as b,a.pycj as d41,b.pycj as d42,c.pycj as d43,a.pycj+b.pycj+c.pycj as zcj from t_1_a_41_pyjd a,t_1_a_42_pyjd b,t_1_a_43_pyjd c where a.bmh=b.bmh,b.bmh=c.bmh;
其中:
t_1_a_41_pyjd,t_1_a_42_pyjd,t_1_a_43_pyjd是三个表。我想把三个pycj加在一起啊。 

解决方案 »

  1.   

    是不是字段里面有null的情况?
      

  2.   

    nvl(字段,0)这样避免为空的情况
      

  3.   

    可是我只加前两个表的时候没有问题啊,t_1_a_41_pyjd,t_1_a_42_pyjd里面pycj也有为空的啊,能加出成绩字段啊
      

  4.   

    select b.bmh as b,a.pycj as d41,b.pycj as d42,a.pycj+b.pycj as zcj from t_1_a_41_pyjd a,t_1_a_42_pyjd b, where a.bmh=b.bmh; 
    这样两个加,没有问题啊,为什么加第三个就错了
      

  5.   

    --用AND连接多个FILTER CONDITIONS:
    SELECT B.BMH AS B,
           A.PYCJ AS D41,
           B.PYCJ AS D42,
           C.PYCJ AS D43,
           A.PYCJ + B.PYCJ + C.PYCJ AS ZCJ
      FROM T_1_A_41_PYJD A, T_1_A_42_PYJD B, T_1_A_43_PYJD C
     WHERE A.BMH = B.BMH
       AND B.BMH = C.BMH;
      

  6.   

    把B.BMH AS B修改一下已经改差不多。列的别名和表的别名是相同,可能存在引用问题
      

  7.   

    呵,我觉的8楼发现了本质问题,如果有为空,可以将8楼的sql改下SELECT B.BMH AS B,
           A.PYCJ AS D41,
           B.PYCJ AS D42,
           C.PYCJ AS D43,
           nvl(A.PYCJ,0) + nvl(B.PYCJ,0) + nvl(C.PYCJ,0) AS ZCJ
      FROM T_1_A_41_PYJD A, T_1_A_42_PYJD B, T_1_A_43_PYJD C
     WHERE A.BMH = B.BMH
       AND B.BMH = C.BMH;
      

  8.   

    select b.bmh as b,a.pycj as d41,b.pycj as d42,c.pycj as d43,a.pycj+b.pycj+c.pycj as zcj from t_1_a_41_pyjd a,t_1_a_42_pyjd b,t_1_a_43_pyjd c where a.bmh=b.bmh,b.bmh=c.bmh;CHange 
    where a.bmh=b.bmh,b.bmh=c.bmh;
    to 
    where a.bmh=b.bmh and b.bmh=c.bmh;
      

  9.   

    a.pycj+b.pycj+c.pycj应该是空值的原因导致。。用nvl(col,0)
      

  10.   

    除了nul()函数问题,看不出其他的问题呀