我有这样的数据
我希望结果数据增加一列“running_balance”,格式如下:
但是结果没有计算amount_a的金额,只是累加了amount_b的总和。
**更新: 我已经更新了我的查询。
当使用特定的id并且带有WHERE id= ....条件时,运行余额是正确的。但是当删除WHERE id= ....条件时,运行余额将出现错误。
id cp_id amount_a amount_b
CCP1 TTP01 10.000.000 2.000.000
CCP1 TTP02 10.000.000 3.000.000
CCP1 TTP03 10.000.000 1.000.000
CCP1 TTP04 10.000.000 500.000
CCP2 TTP05 5.000.000 1.000.000
CCP2 TTP06 5.000.000 2.000.000
CCP3 TTP07 1.000.000 500.000
我希望结果数据增加一列“running_balance”,格式如下:
id amount_a amount_b running_balance
CCP1 10.000.000 2.000.000 8.000.000
CCP1 10.000.000 3.000.000 5.000.000
CCP1 10.000.000 1.000.000 4.000.000
CCP1 10.000.000 500.000 3.500.000
CCP2 5.000.000 1.000.000 4.000.000
CCP2 5.000.000 2.000.000 2.000.000
CCP3 1.000.000 500.000 500.000
我已经做了这样的查询
/* Formatted on 1/26/2017 2:50:06 PM (QP5 v5.115.810.9015) */
SELECT B.NO_KLAIM AS id,
a.amount AS amount_a,
B.AMOUNT AS amount_b,
SUM (A.AMOUNT) OVER (ORDER BY B.AMOUNT ROWS UNBOUNDED PRECEDING)
AS running_balance
FROM TRX_TITIPAN A
JOIN
TRX_KLAIM_TITIPAN B
ON A.NO_RESI_TITIPAN = B.NO_RESI_TITIPAN
GROUP BY B.NO_KLAIM, B.AMOUNT, a.amount
但是结果没有计算amount_a的金额,只是累加了amount_b的总和。
**更新: 我已经更新了我的查询。
/* Formatted on 1/26/2017 2:50:06 PM (QP5 v5.115.810.9015) */
SELECT B.NO_KLAIM AS id,
a.amount AS amount_a,
B.AMOUNT AS amount_b,
NVL (TITIP.AMOUNT, 0)
- SUM (NVL (KLAIM.AMOUNT, 0))
OVER (PARTITION BY TITIP.AMOUNT
ORDER BY TITIP.NO_RESI_TITIPAN,
KLAIM.NO_KLAIM,
TITIP.AMOUNT,
KLAIM.AMOUNT asc
ROWS UNBOUNDED PRECEDING) as running_balance
FROM TRX_TITIPAN A
JOIN
TRX_KLAIM_TITIPAN B
ON A.NO_RESI_TITIPAN = B.NO_RESI_TITIPAN
GROUP BY B.NO_KLAIM, B.AMOUNT, a.amount
当使用特定的id并且带有WHERE id= ....条件时,运行余额是正确的。但是当删除WHERE id= ....条件时,运行余额将出现错误。
partition by
子句中包含id
。在分析函数中,partition by
的工作方式与聚合查询中的group by
相同 - 它确定您希望分析函数跨越哪些行组进行工作。 - Boneist