将 运行 总计 oracle sql 查询转换为最终总计
Convert a running total oracle sql query to a final total
我有以下有效的查询并得到了我需要的总数。
但是,我需要对其进行更改,以便它仅显示最终总数,而不是导致总数的每笔交易。我尝试过按组按汇总、按组集进行转换,使用最大事务数,但我的总数永远不匹配,而且我不完全理解 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
我最终用这个来得到我需要的东西:
将其放入 Select 语句
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
这最终给了我每个人一个结果,而不是显示每笔交易的总数
我有以下有效的查询并得到了我需要的总数。
但是,我需要对其进行更改,以便它仅显示最终总数,而不是导致总数的每笔交易。我尝试过按组按汇总、按组集进行转换,使用最大事务数,但我的总数永远不匹配,而且我不完全理解 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
我最终用这个来得到我需要的东西:
将其放入 Select 语句
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
这最终给了我每个人一个结果,而不是显示每笔交易的总数