Как получить сумму полученных строк в 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

Обратитесь к документации клиента, который используется для вызова запроса, за точным описанием комманд для формирования репорта.

→ Ссылка