将正在运行的总计oracle sql查询转换为最终总计

问题描述 投票:0回答:1

我有以下查询有效,并向我获取了所需的总数。

但是,我需要对其进行更改,以使其仅显示最终的总计,而不是显示导致总计的每笔交易。我尝试使用最大事务数按组汇总,按组集进行转换,但是我的总数从未匹配,并且我不完全了解select语句的SUM解码部分。我认为我需要将其中一部分移至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; 

任何有关如何转换此值的帮助,我都将获得与最终运行总金额匹配的总金额,我们将不胜感激。我的最终目标是获得一个pidms(IDS)列表的总计,一行中每个pidm的总数。

sql oracle rollup
1个回答
0
投票

您似乎想删除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
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.