可以的。
用一句sql写可能有点麻烦,待我想想。
用多句的话,可以这样,先把这两张表各按照a,b,c分组统计得到两张临时表。然后把这两张要参与统计的字段都组合一张临时表中,然后通过两个字段间的数据运算得到结果。这肯定行的。

解决方案 »

  1.   

    to:liujianjun_(流星尔)和所用的delphi 程序员
    我个人认为 delphi的程序员是最热心和善良的
     
      

  2.   

    或者先通过全连接,select sum(table1.name1)-sum(table2.name2) as name,sum(table1.figrue1)-sum(table2.figrue2) as figrue from table1 full outer join table2 on table1.name1=table2.name2 group by name
    没试过,不知道对不对,很可能错了
      

  3.   

    select a.name1, isnull(a.sum_figure1,0)-isnull(b.sum_figure2,0) as figure 
    from 
        (select name1, sum(figure1) as sum_figure1 from table1 group by name1) as a
        inner join 
        (select name2, sum(figure1) as sum_figure2 from table2 group by name2) as b
        on a.name1=b.name2
    group by a.name1
      

  4.   

    我上面的语句要求所求的name全部出现在table1中, 如果有的name没有出现在table1中, 可如下:select name, sum(sum_figure1) as figure 
    from 
        (select name1 as name, sum( figure1) as sum_figure from table1 group by name1
         union all
         select name2 as name, sum(-figure2) as sum_figure from table2 group by name2) as a
    group by name
      

  5.   

    to nononono:高,这个方法肯定对了。
    to renren6250:用楼上的。我的方法相比之下,就差多了
      

  6.   

    select a.name1,(a.sumfigrue-b.sumfigrue) as sumfigrue from (select name1,sum(figrue1) as sumfigrue from table1 group by name1) a left join 
    (select name2,sum(figrue2) as sumfigrue from table2 group by name2) b on a.name1=b.name2
      

  7.   

    我的第一个语句还是有问题. 建议用第二个.renren6250(刀客), 怎么转这里来了? 数据库的兄弟们写这个的人多极了.
      

  8.   

    CREATE VIEW view1 AS 
    SELECT name1 AS name
    FROM TABLE1
    GROUP BY name1
    UNION
    SELECT name2 AS name
    FROM TABLE2
    GROUP BY name2
      

  9.   

    SELECT name,
              (SELECT SUM(figrue1)
             FROM table1
             WHERE name1 = view1.name) -
              (SELECT SUM(figrue2)
             FROM table2
             WHERE name2 = view1.name) AS figrue
    FROM view1
    GROUP BY name//////////////////
    name Expr1
    a 10
    b 30
    c 50
      

  10.   

    zswang(伴水)(伤心中) 
    你的方法可以的(+30分)
    tO:nononono(null,null) 
    select name, sum(sum_figure1) as figure 
    from 
        (select name1 as name, sum( figure1) as sum_figure from table1 group by name1
        union all
        select name2 as name, sum(-figure2) as sum_figure from table2 group by name2) as a
    group by name
    to:tommychim(大脚鸟) 
    select a.name1,(a.sumfigrue-b.sumfigrue) as sumfigrue from (select name1,sum(figrue1) as sumfigrue from table1 group by name1) a left join 
    (select name2,sum(figrue2) as sumfigrue from table2 group by name2) b on a.name1=b.name2 
    这两个sql都不对.但我不知道为什么不对!
    有人能解释一下吗?
      

  11.   

    ////////////////////语法不对呀SELECT
    从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列。虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下:SELECT select_list
    [ INTO new_table ] 
    FROM table_source 
    [ WHERE search_condition ] 
    [ GROUP BY group_by_expression ] 
    [ HAVING search_condition ] 
    [ ORDER BY order_expression [ ASC | DESC ] ] 可以在查询之间使用 UNION 运算符,以将查询的结果组合成单个结果集。语法
    SELECT statement ::=
        < query_expression >
        [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }
            [ ,...n ]    ] 
        [ COMPUTE
            { { AVG | COUNT | MAX | MIN | SUM } ( expression ) } [ ,...n ]
            [ BY expression [ ,...n ] ]
        ] 
        [ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }
                [ , XMLDATA ]
                [ , ELEMENTS ]
                [ , BINARY base64 ]
            } 

        [ OPTION ( < query_hint > [ ,...n ]) ] < query expression > ::=
        { < query specification > | ( < query expression > ) }
        [ UNION [ ALL ] < query specification | ( < query expression > ) [...n ] ]< query specification > ::=
        SELECT [ ALL | DISTINCT ]
            [ { TOP integer | TOP integer PERCENT } [ WITH TIES ] ]
            < select_list >
        [ INTO new_table ]
        [ FROM { < table_source > } [ ,...n ] ]
        [ WHERE < search_condition > ]
        [ GROUP BY [ ALL ] group_by_expression [ ,...n ]
            [ WITH { CUBE | ROLLUP } ]
        ]
        [HAVING <search_condition>]由于 SELECT 语句的复杂性,下面按子句说明详细的语法元素和参数:SELECT 子句
    INTO 子句
    FROM 子句
    WHERE 子句
    GROUP BY 子句
    HAVING 子句
    UNION 运算符
    ORDER BY 子句
    COMPUTE 子句
    FOR 子句
    OPTION 子句&copy;1988-2000 Microsoft Corporation。保留所有权利。