我有以下查询有效,并向我获取了所需的总数。
但是,我需要对其进行更改,以使其仅显示最终的总计,而不是显示导致总计的每笔交易。我尝试使用最大事务数按组汇总,按组集进行转换,但是我的总数从未匹配,并且我不完全了解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的总数。
您似乎想删除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