传播

时间:2016-11-25 04:30:44

标签: sql join oracle11g

我有以下SQL查询,正如我们在屏幕截图中看到的,有两个重复行具有相同的constr_id(2015)值但具有不同的assigned_insurance_packages

enter image description here

查询:

select  
    ac.constr_id,             
    AIP.NAME as ASSIGNED_INSURANCE_PACKAGES,
    ac.code,ac.constr_name, 
    ac.offer_name,  
    ac.repay_freq,     
    ac.min_amt,        
    ac.max_amt,          
    ac.min_downpay_percent,     
    ac.max_downpay_percent, 
    ac.downpay_amount,        
    ac.min_term,    
    (select 
         listagg(AF.NAME, '; ') within group(order by ACF.CONSTR_ID)  
     from  
         CREDILOGIC.ACQ_CONSTR_FEE acf, CREDILOGIC.ACQ_FEE  af 
     where 
         ACF.CONSTR_ID = AC.CONSTR_ID and AF.FEE_ID = ACF.FEE_ID) as CONSTRUCTION_FEES, 
    INS_COMPANY.SHORT_NAME,
    (select listagg(x.DURATION_MIN || '-' || TO_CHAR(x.RATE_SHIFT, '90.99') || ',' || x.DURATION_MAX || '-' || TO_CHAR(x.RATE_SHIFT, '90.99'), '; ') within group (order by X.CONSTRUCTION_ID)    
     from credilogic.ACQ_CONSTRUCTION_BASERATE x
     where X.CONSTRUCTION_ID = AC.CONSTR_ID) as RATE
from 
    CREDILOGIC.ACQ_CONSTRUCTION ac
left join 
    CREDILOGIC.ACQ_CONSTR_INSPACKAGE aci on ACI.CONSTR_ID = AC.CONSTR_ID 
                                         and ACI.DELETED_TSTAMP is null
left join 
    CREDILOGIC.ACQ_INSURANCE_PACKAGE aip on AIP.INSURANCE_PACKAGE_ID = ACI.INSURANCE_PACKAGE_ID
left join 
    credilogic.ath_party ins_company ON INS_COMPANY.PARTY_ID = aip.PARTY_ID
left join 
    credilogic.ACQ_CONSTRUCTION_DUEDATE  acd on ac.constr_id =  acd.constr_id
left join 
    credilogic.ACQ_APPLICATION acp on ac.constr_id = acp.construction_id

我将创建另外两个列,例如0.3% insurance pack0.5% insurance pack,将ASSIGNED_INSURANCE_PACKAGES值放入不同的列,如下图所示

enter image description here

0 个答案:

没有答案