Преобразование текущего итогового SQL-запроса Oracle в итоговую сумму

У меня есть следующий запрос, который работает и получает мне все, что мне нужно.

Однако мне нужно изменить его так, чтобы он просто отображал итоговую сумму вместо каждой транзакции, ведущей к итоговой сумме. Я попытался преобразовать его по группам, свертки, группам по группам, используя максимальное количество транзакций, но мой итог никогда не совпадает, и я не до конца понимаю часть декодирования 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

Есть идеи?

10000