Oracle Query - 总结某些条件的余额

时间:2016-03-21 18:30:43

标签: oracle

有人可以帮我解决这个问题。我需要编写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金额分开。

以下是一些示例数据...感谢任何帮助..提前致谢。

enter image description here

以下是前两个ID的示例输出..

enter image description here

2 个答案:

答案 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