Функция Windows для блока запросов - количество и сумма - PullRequest
0 голосов
/ 19 февраля 2019

Как я могу переписать приведенный ниже запрос, чтобы использовать функцию окна?

select bm.book_cd_id, count(*), sum(amt) 
from   ldfods_prd.gl_fincl_dtl fd, 
       ldfods_prd.gl_book_cd_hier_mstr bm
where  fd.book_cd_mstr_id = bm.book_cd_mstr_id
and    fy = 2017 
and    acctg_prd = 1
group by bm.book_cd_id;

1 Ответ

0 голосов
/ 19 февраля 2019

Ответ на ваш вопрос будет следующим:

select DISTINCT bm.book_cd_id, 
       count(*) over ( partition by bm.book_cd_id), 
       sum(amt) over ( partition by bm.book_cd_id)
from   ldfods_prd.gl_fincl_dtl fd, 
       ldfods_prd.gl_book_cd_hier_mstr bm
where  fd.book_cd_mstr_id = bm.book_cd_mstr_id
and    fy = 2017 
and    acctg_prd = 1;

Но на самом деле это был бы шаг в неверном направлении.Ваш опубликованный запрос в основном «даст мне одну запись в моем наборе результатов для каждого book_cd_id и для каждого, дайте мне количество записей с этим book_cd_id и суммой столбцов этих записей amt».То, как вы написали свой запрос, используя обычные агрегатные функции, это именно то, как это сделать.Вы бы не хотели вводить оконные функции просто ради этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...