У меня есть следующий запрос, который работает и получает мне все, что мне нужно.
Однако мне нужно изменить его так, чтобы он просто отображал итоговую сумму вместо каждой транзакции, ведущей к итоговой сумме. Я попытался преобразовать его по группам, свертки, группам по группам, используя максимальное количество транзакций, но мой итог никогда не совпадает, и я не до конца понимаю часть декодирования SUM оператора select. Я считаю, что мне нужно перенести часть этого в оператор where, чтобы сделать то, что мне нужно.
Вот запрос:
SELECT
SUM(DECODE(tbbdetc_type_ind,'C', (-1) * a.tbraccd_amount,'P',a.tbraccd_amount) ) OVER(
PARTITION BY a.tbraccd_pidm
ORDER BY
a.tbraccd_tran_number
) "Running total",
tbbdetc.tbbdetc_detail_code,
tbbdetc.tbbdetc_type_ind,
a.*
FROM
tbraccd a
JOIN taismgr.tbbdetc ON a.tbraccd_detail_code = tbbdetc.tbbdetc_detail_code
WHERE
a.tbraccd_pidm = '
order by tbraccd_tran_number desc;
Буду признателен за любую помощь в том, как преобразовать это, так что я просто получу итоговую сумму, которая соответствует итоговой итоговой сумме Моей конечной целью было бы получить общий итог для списка пидмов (IDS) по одному итогу для каждого пидма подряд.
Всего 1 ответ
Вы, кажется, хотите удалить order by
. Я также сделаю пользу от преобразования в стандартный синтаксис SQL:
sum(case when tbbdetc_type_ind = 'C' then - a.tbraccd_amount
when tbbdetc_type_ind = 'P' then a.tbraccd_amount
end) over (partition by a.tbraccd_pidm) as total_total