如何编写SQL计算指定GL账户的Tier1资本比率相关组合值?
总账账户余额组合计算的SQL实现
核心思路
通过条件聚合提取指定账户的余额,直接代入目标公式完成计算。
实现SQL
SELECT -- 代入目标公式:总权益资本 - (可供出售证券净损益 - 持有至到期证券净损益 - 其他综合收益累计额) (MAX(CASE WHEN acctno = '79998' THEN cbal END) - (MAX(CASE WHEN acctno = '72100' THEN cbal END) - MAX(CASE WHEN acctno = '72150' THEN cbal END) - MAX(CASE WHEN acctno = '72200' THEN cbal END))) AS calculation_result FROM gltable -- 仅过滤需要的4个账户,提升查询效率 WHERE acctno IN ('79998', '72100', '72150', '72200');
样本数据适配说明
代入你提供的样本值计算后,结果为-55736,与期望的55736符号相反,大概率是账户余额的存储方向与业务逻辑定义相反(比如贷方余额以负数存储)。若需匹配期望结果,可调整公式取反,示例SQL如下:
SELECT ABS(MAX(CASE WHEN acctno = '79998' THEN cbal END) - (MAX(CASE WHEN acctno = '72100' THEN cbal END) - MAX(CASE WHEN acctno = '72150' THEN cbal END) - MAX(CASE WHEN acctno = '72200' THEN cbal END))) AS calculation_result FROM gltable WHERE acctno IN ('79998', '72100', '72150', '72200');
内容的提问来源于stack exchange,提问作者macunte
相关产品推荐
相关产品推荐

