有人可以帮我解决这个问题。我需要编写oracle查询来通过REF和REFERENCE_ID总结余额
以下是一些标准,
MultiValue可以从1,2,3开始,它将具有从1到n的任意数量的子值... 现在,PROPERTY字段值仅适用于MultiValue = 1和SubValue = 1。 我们已经为该多值集考虑了相同的PROPERTY属性字段。
例如MultiValue 1 PROPERTY = BALANCE和Multivalue = 2 PROPERTY = INTEREST等......并且需要总结余额 通过REF和REFERENC_ID
另外,需要将BALANCES amouts和INTEREST金额与PENALTY金额分开。
以下是一些示例数据...感谢任何帮助..提前致谢。
以下是前两个ID的示例输出..
答案 0 :(得分:0)
您可以使用分析first_value()
函数调用(或max,min等)填写缺少的属性值:
select reference_id, multivalue, subvalue, code,
first_value(property) over (partition by reference_id, multivalue) as property,
ref, amount
from your_table;
REFERENCE_ID MULTIVALUE SUBVALUE CODE PROPERTY R AMOUNT
-------------- ---------- ---------- ---------- -------- - ----------
BILL121220PBD8 1 1 10001 BALANCE a 1061.08
BILL121220PBD8 1 2 10001 BALANCE b 5395.89
BILL121220PBD8 1 3 10001 BALANCE c 4043.07
BILL121220PBD8 1 4 10001 BALANCE d 4100.22
BILL121220R2HL 2 1 10001 INTEREST e 60487.88
BILL121220R2HL 2 2 10001 INTEREST e 60487.88
BILL121220R2HL 2 3 10001 INTEREST f 526631.51
...
然后,您可以将其用作子查询(作为内联视图或CTE),以形成分组的基础:
select reference_id as bill_reference, property, ref as repay_ref,
sum(amount) as repay_amount
from (
select reference_id, multivalue, subvalue, code,
first_value(property) over (partition by reference_id, multivalue) as property,
ref, amount
from your_table
)
group by reference_id, property, ref
order by reference_id, property, ref;
BILL_REFERENCE PROPERTY R REPAY_AMOUNT
-------------- -------- - ------------
BILL121220PBD8 BALANCE a 1061.08
BILL121220PBD8 BALANCE b 5395.89
BILL121220PBD8 BALANCE c 4043.07
BILL121220PBD8 BALANCE d 4100.22
BILL121220R2HL INTEREST e 120975.76
BILL121220R2HL INTEREST f 526631.51
...
(我从您的图片中重新输入了参考ID以构成测试数据,但是也无法重新键入单个参考ID。其中一个原因是首选文本而不是图像。)
答案 1 :(得分:-1)
您是否尝试按REF或REFERENCE_ID汇总金额?如果是这样,您应该使用group by
子句。
例如,如果您想总结每种REF的金额:
select REF, SUM(AMOUNT)
from BALANCE_TBL
group by REF