Как получить сумму полученных строк в SQL?
Как получить сумму полученных строк в SQL?
select
us.fio_pri
,us.sum_pri
,null
,us.fio_ott
,us.sum_ott
,null
--,us.sum_all
from
(
select
fio_pri
,sum_pri
,fio_ott
,sum_ott
--,sum_all
,rownum numb
from
(
select glbl_name.get_doviz_name(ba.ccy_id) fio_pri
,null sum_pri
,null fio_ott
,sum(abs(NVL(ba.YTD_CR,0)-NVL(ba.YTD_DR,0)+NVL(ba.DYL_CR,0)-NVL(ba.DYL_DR,0))) sum_ott
--,null sum_all
from gl_account_sub_balance_all ba
where ba.ldate=to_date('&start_date', 'dd.mm.yyyy')-1
and ba.ccy_id=2
and SUBSTR(ba.account_id, 1,5) in (10101,10102)
group by ba.ccy_id
/*UNION ALL
select fio_pri
,sum_pri
,fio_ott
,sum_ott
--,sum_all
from
(
select
rownum numb
,GLBL_NAME.GET_CUSTOMER(a.customer)||'-'||a.pb_comment fio_pri
,a.amount sum_pri
--,sum(a.amount) sum_all
from
ph_in a
where trunc(a.import_date)=to_date('&start_date', 'dd.mm.yyyy')
and a.currency='USD' and a.amount>=50000)*/
UNION ALL
select fio_pri
,sum_pri
,fio_ott
,sum_ott
--,sum_all
from
(
select
rownum numb
,GLBL_NAME.GET_CUSTOMER(a.customer)||'-'||a.pb_comment fio_pri
,a.amount sum_pri
--,sum(a.amount) sum_all
from
ph_in a
where trunc(a.import_date)=to_date('&start_date', 'dd.mm.yyyy')
and a.currency='USD' and a.amount>=50000) pri
full join
(
select
rownum numb
,GLBL_NAME.GET_CUSTOMER(a.customer)||'-'||a.name fio_ott
,a.amount sum_ott
--,sum(a.amount) sum_all
from
gaia.ph_fc_out a
where a.value_date=to_date('&start_date', 'dd.mm.yyyy')
and a.currency_code=2 and a.amount>=50000) ott on pri.numb=ott.numb)
) us
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
Сумму значений из полученных как результат строк, возможно сделать только в клиенте, который получает этот результат.
Например, в SQL Developer можно воспользоваться командой COMPUTE.
Для следующих данных:
create table t (name, val) as
select trim (column_value) name, rownum*10 sumval
from xmlTable ('"Name1","Name2"'), (select 1 from dual connect by level<=2)
/
select * from t;
NAME VAL
-------- ----------
Name1 10
Name2 20
Name1 30
Name2 40
Можно так получить конечную сумму:
break on report;
compute sum label 'Summe:' of sum on report;
select name, sum (val) sum
from t
group by name
order by name
/
NAME SUM
-------- ----------
Name1 40
Name2 60
----------
Summe: 100
Обратитесь к документации клиента, который используется для вызова запроса, за точным описанием комманд для формирования репорта.

