Как вычесть сумму одного запроса к сумме другого запроса в той же таблице oracle sql? - PullRequest
0 голосов
/ 05 августа 2020

У меня 2 запроса, оба возвращают сумму, Мне нужна разница между этими суммами в одном запросе.

Query 1:
   select sum(Records) from my_table where column1 ='1' and column2 = 'abc'
Query 2:
    select sum(Records) from my_table where column1 ='2' and column2 = 'adf'

обратите внимание, что оба запроса имеют одинаковое имя_таблицы.

My table:
column1 column2  column3     column4  records
1           aa   something      abc    12
2           bb   something      acd    25
2           aa   something      adf    04
1           bb   something      abc    21

Любая помощь будет оценена. Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 07 августа 2020
• 1000 1004 *
0 голосов
/ 05 августа 2020

Или, если вы хотите сохранить уже написанные запросы, используйте их как CTE:

with 
a (suma) as 
  (select sum(Records) from my_table where column1 ='1' and column2 = 'abc'),
b (sumb) as
  (select sum(Records) from my_table where column1 ='2' and column2 = 'adf')
select a.suma - b.sumb as difference
from a cross join b
0 голосов
/ 05 августа 2020

Сегодня у меня нет Oracle под рукой, но это должно вас приблизить.

select ( select sum(Records) from my_table where column1 ='1' and column2 = 'abc') -  
(select sum(Records) from my_table where column1 ='2' and column2 = 'adf') 
as Total from dual;
0 голосов
/ 05 августа 2020

Использовать условное агрегирование:

select sum(case when column1 = '1' and column2 = 'abc' then Records
                when column1 = '2' and column2 = 'adf' then - Records
                else 0
           end) as diff
from my_table ;
...