2014-11-06 4 views
0

У меня есть оператор sql, который даст мне два столбца из двух таблиц с использованием подзапроса.MS SQL Server сумма полей сумм

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

ответ

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 
Смежные вопросы