Как добавить значения из 2 запросов - PullRequest
3 голосов
/ 10 июня 2009

Из запроса 1 st я получаю некоторое значение, а из запроса 2 nd я получаю некоторое значение. Я хочу сумму двух значений.

Запрос 1:

select sum(EAmount) from EstimateAmount where pid='3' group by pid

Запрос 2:

select sum(OPEAmount) from OPEAmount where pid='3' group by pid

Ответы [ 4 ]

13 голосов
/ 10 июня 2009
select 

(select sum(EAmount) from EstimateAmount 
where pid='3' 
group by pid) 
+ 
(select sum(OPEAmount) from OPEAmount 
where pid='3' 
group by pid) 
3 голосов
/ 10 июня 2009

Решение Митча верное, я просто хочу добавить более общее решение для случаев, когда вам нужна сумма для всех пидов, и которое может быть расширено до нескольких агрегатов:

with agg_EA as (
    select pid, sum(EAmount) as sumEA
    from EstimateAmount 
    group by pid) 
, agg_OPEA as (
    select pid, sum(OPEAmount) as sumOPE
    from OPEAmount 
    group by pid)
select sumEA+sumOPE
    from agg_EA
    join agg_OPEA on agg_EA.pid = agg_OPE.pid
0 голосов
/ 10 июня 2009

Просто присоединитесь к ним:

SELECT sum(coalesce(e.EAmount,0) + coalesce(o.OPEAmount,0))
FROM EstimateAmount e
LEFT JOIN OPEAmount o ON o.pid = e.pid
WHERE e.pid = 3
GROUP BY e.pid
0 голосов
/ 10 июня 2009

Вы также можете использовать Объединение всех и во вложенной таблице при агрегировании сумм сумм

select  sum(agg.Total) as GrandTotal
from    ( select sum(EAmount) as Total from EstimateAmount where pid='3' group by pid
      union all
      select sum(OPEAmount) as Total from OPEAmount where pid='3' group by pid
    ) agg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...