2014-11-06 101 views
0

我有一个sql语句,它会给我两个使用子查询的表中的两列。MS SQL Server sum字段的总和

select 
    sum(field1) as f1_sum, 
    (select sum(field2) from table2) as f2_sum 
from 
    table1 
group by 
    table1.field_x 

我想总的f1_sum + f2_sum从该查询输出的第三列。这似乎很简单,但我无法找到解决这个问题的方法。问题是如何获得总和字段的总和。

我行写SP或为了做到这一点等等。

有人能帮助吗?

+0

您可以使用子查询 – bksi 2014-11-06 00:48:49

回答

1

你可以使用子查询,如:

SELECT t1.f1_sum+t1.f2_sum AS total_sum FROM 
    (select sum(field1) as f1_sum , (select sum(field2) from table2) as f2_sum 
     from table1 
    group by table1.field_x) AS t1 
0

你也可以试试这个:

SELECT SUM(a.field1) f1_sum, 
     SUM(b.field2) f2_sum, 
     (SUM(a.field1) + SUM(b.field2)) f3_sum 
from table1 a, table2 b 
1

我建议做这样的:

select t1.f1_sum, t2.f2_sum, coalesce(t1.f1_sum, 0) + coalesce(t2.f2_sum, 0) 
from (select sum(field1) as f1_sum 
     from table1 t1 
     group by t1.field_x 
    ) t1 cross join 
    (select sum(field2) as f2_sum from table2) t2; 

如果可能的话,我更喜欢保留from条款中的表格引用。我添加了coalesce()以防万一任何值可能是NULL

0

只要你能写,

select sum(field1) as f1_sum 
     , (select sum(field2) from table2) as f2_sum 
     , (ISNULL(sum(field1),0) + ISNULL((select sum(field2) from table2),0)) AS Total_Sum 
from table1 
group by table1.field_x