A表字段 A   N
       A1  7
       A2  8
       
B表字段 B1,N1,N2,N3
       A1,1 ,2 ,3
       A1,4 ,5 ,6
       A2,1 ,2 ,3
想得到:
A    N
A1   28
A2   14即求和B再加A
       

解决方案 »

  1.   

    A表字段 
    A   N 
    A1  7 
    A2  8 
          
    B表字段
    B1,N1,N2,N3 
    A1,1 ,2 ,3 
    A1,4 ,5 ,6 
    A2,1 ,2 ,3 
    想得到: 
    A    N 
    A1  28 
    A2  14 即求和B再加A 
          
      

  2.   

    SELECT A.A 
         , A.N+SUM(B.N1+B.N2+B.N3)
    FROM A LEFT JOIN
         B ON A.A=B.B1
      

  3.   

    SELECT A.A 
        , SUM(A.N+B.N1+B.N2+B.N3) AS N 
    FROM A LEFT JOIN 
        B ON A.A=B.B1
    GROUP BY A.A
      

  4.   

    --  TRY IT ...
    SQL> SELECT A.A,
      2         SUM(B.N1+B.N2+B.N3)+MAX(A.N) AS N
      3    FROM A,
      4         B
      5   WHERE A.A = B.B1
      6   GROUP BY A.A;A           N
    -- ----------
    A1         28
    A2         14
      

  5.   

    UPDATE A(
    SET N=N+ (
           SELECT SUM(B.N1+B.N2+B.N3)
             FROM B 
             WHERE B.B1 = A.A
           GROUP BY A.A
          )
      

  6.   

    也可以这样
    UPDATE A
    SET N=(
         SELECT SUM(A.N+B.N1+B.N2+B.N3) AS N 
          FROM A LEFT JOIN 
               B ON A.A=B.B1 
          GROUP BY A.A
          )
      

  7.   

     意外的 SQL 命令结尾 什么意思?
      

  8.   


    呵呵,多了(
    UPDATE A 
    SET N=N+ ( 
          SELECT SUM(B.N1+B.N2+B.N3) 
            FROM B 
            WHERE B.B1 = A.A 
          GROUP BY A.A 
          )
      

  9.   

    --TRY IT ..-- 1ST WAY:
    UPDATE (SELECT MAX(A.N) AN,
                   SUM(B.N1+B.N2+B.N3)+MAX(A.N) AS NN
              FROM (SELECT 'A1' A,7 N FROM DUAL
                    UNION ALL
                    SELECT 'A2' A,8 N FROM DUAL
                   )A,
                   (
                    SELECT 'A1' B1,1 N1,2 N2,3 N3 FROM DUAL
                    UNION ALL
                    SELECT 'A1' B1,4 N1,5 N2,6 N3 FROM DUAL
                    UNION ALL
                    SELECT 'A2' B1,1 N1,2 N2,3 N3 FROM DUAL
                   )B
             WHERE A.A = B.B1
             GROUP BY A.A
            )
      SET AN = NN;
      
    -- 2ND WAY:
    UPDATE A
       SET A.N = (SELECT SUM(B.N1+B.N2+B.N3)+MAX(A.N) AS NN
                    FROM B
                   WHERE A.A = B.B1
                   GROUP BY A.A
                  )
     WHERE EXISTS (SELECT 1
                     FROM B
                    WHERE A.A = B.B1);
      

  10.   

    (SELECT 'A1' A,7 N FROM DUAL
                    UNION ALL
                    SELECT 'A2' A,8 N FROM DUAL
                   )A,
                   (
                    SELECT 'A1' B1,1 N1,2 N2,3 N3 FROM DUAL
                    UNION ALL
                    SELECT 'A1' B1,4 N1,5 N2,6 N3 FROM DUAL
                    UNION ALL
                    SELECT 'A2' B1,1 N1,2 N2,3 N3 FROM DUAL
                   )B
    上面是我凑成的结果集,你测试的时候可以改成 A,B