请教这句语法有何问题?
SELECT SUM(A.E)+SUM(B.E)+SUM(C.E) AS E INTO E_DIS FROM C_1 A,C_2 B,C_3 C
SELECT * FROM E_DIS
E字段是0或1的值,我试过分开算的话,SUM(A.E)=0、SUM(B.E)=234 、SUM(C.E)=403, 
但用SUM(A.E)+SUM(B.E)+SUM(C.E)的话得到的结果是:27391,为什么?

解决方案 »

  1.   

    SELECT   SUM(isnull(A.E,0))+SUM(isnull(B.E,0))+SUM(isnull(C.E,0))   AS   E   INTO   E_DIS   FROM   C_1   A,C_2   B,C_3   C 
    SELECT   *   FROM   E_DIS 
      

  2.   

    SELECT   SUM(A.E+B.E+C.E)   AS   E   INTO   E_DIS   FROM   C_1   A,C_2   B,C_3   C
      

  3.   

    SELECT   SUM(A.E)+SUM(B.E)+SUM(C.E)   AS   E   INTO   E_DIS   FROM   C_1   A,C_2   B,C_3   C --这样连接会出现N重复
    SELECT   *   FROM   E_DIS 
    ---------------------------e为bit类型时 sum(cast(e as int))--这样转换
    select (select sum(e) from c_2)+(select sum(e) from c_1)+(select sum(e) from c_3)
      

  4.   

    问题大了。
    3个表,每个表中有100个记录,你会的到100*100*100*3个记录然后相加。大的数据量根本没法算下去。你的方法应该是
    SELECT SUM(d.Total)
    FROM
    (SELECT 1 AS ID,SUM(a.E) AS total
    FROM C_1 a
    UNION
    SELECT 2 AS ID, SUM(b.E) AS total
    FROM C_2 b
    UNION
    SELECT 3 AS ID, SUM(c.E) AS Total
    FROM C_3 c ) d
     
      

  5.   

    笛卡尔积集
    select E=(select sum(Isnull(e,0)) from c_2)+(select sum(Isnull(e,0)) ) from c_1)+(select sum(Isnull(e,0)) ) from  c_3)  into  E_DIS SELECT   E  FROM   E_DIS