Oracle基于条件关联两表并分组,补全贷款类型维度数据查询需求
Oracle SQL实现方案
实现逻辑
- 第一步:从
Table1中去重提取所有Bank、Category、Month_Year的维度组合 - 第二步:将上述维度组合与
Table2的全量Bank、Loan_Type数据按Bank字段关联,得到所有需要输出的维度行 - 第三步:左关联
Table1的原始业务数据,用NVL函数将未匹配到的Outstanding值填充为0
完整SQL语句
SELECT dim.Bank, dim.Category, dim.Month_Year, dim.Loan_Type, NVL(t1.Outstanding, 0) AS Outstanding FROM ( -- 生成所有需要的维度组合 SELECT d.Bank, d.Category, d.Month_Year, t2.Loan_Type FROM (SELECT DISTINCT Bank, Category, Month_Year FROM Table1) d INNER JOIN Table2 t2 ON d.Bank = t2.Bank ) dim LEFT JOIN Table1 t1 ON dim.Bank = t1.Bank AND dim.Category = t1.Category AND dim.Month_Year = t1.Month_Year AND dim.Loan_Type = t1.Loan_Type ORDER BY dim.Category, dim.Month_Year, dim.Loan_Type;
说明
- 上述语句的排序逻辑与你给出的预期结果排序一致,可根据实际需求调整排序字段
- 多银行场景下关联逻辑也可以正常适配,无需额外修改
内容的提问来源于stack exchange,提问作者ABR
相关产品推荐
相关产品推荐

