Преобразовать текущий итог oracle sql в итоговый итог - PullRequest
0 голосов
/ 15 января 2020

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

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

Любая помощь о том, как преобразовать это, так что я просто получаю общая сумма, которая соответствует итоговой итоговой сумме, будет оценена. Моей конечной целью было бы получить итоговую сумму для списка пидмов (IDS) по одному итогу для каждого пидма подряд.

Ответы [ 2 ]

1 голос
/ 15 января 2020

Казалось бы, вы хотите удалить 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
0 голосов
/ 03 марта 2020

Я закончил с этим, чтобы получить именно то, что мне нужно:

Поместите это в выражение выбора

SUM(CASE 
    WHEN tbbdetc_type_ind = 'C' THEN -A.tbraccd_amount 
    WHEN tbbdetc_type_ind = 'P' THEN A.tbraccd_amount 
    END)  TOTAL_TOTAL

и это после группы:

HAVING SUM(CASE 
           WHEN tbbdetc_type_ind = 'C' THEN -A.tbraccd_amount 
           WHEN tbbdetc_type_ind = 'P' THEN A.tbraccd_amount 
           END) > -200.00

Это привело к тому, что я получил один результат на человека вместо показа суммы за каждую транзакцию

...