• oracle-外连接left join的应用


    需求

     自助设备交易统计

     

    输入项

    类型

    可为空

    备注

    机构

    选择

    Y

    采用下拉框的形式

    终端号

    手输

    Y

    与柜员号二选一

    交易柜员号

    手输

    与终端号二选一

    时间

    选择

    N

    时间区间

    状态

    多选

     

    设备状态:停用、启用

     

    输出(新增各业务的交易总额字段):

     

     

    我自己在报表工具birt中写的sql

    select  *    
    from (
     -- 查询基本信息
        select    term.TERMINAL_ID BASIC_TERM_ID,
            max(term.APP_TERM_NO) APP_TERM_NO,
            max(device.DEVICE_TYPE) DEVICE_TYPE,
            max(model.MODEL_DESC) MODEL_DESC,
            max(branch.SHORT_NAME) branch_name,
            max(subbranch.SHORT_NAME) sub_name,
            max(self.SHORT_NAME) self_name,
            max(self.INST_TYPE) INST_TYPE
        from     SELFCUR.OPS_TERMINAL_INFO    term,
            SELFCUR.OPS_DEVICE_INFO        device,
            SELFCUR.OPS_DEVICE_MODEL    model,
            SELFCUR.OPS_INSTITUTION        branch,
            SELFCUR.OPS_INSTITUTION        subbranch,
            SELFCUR.OPS_INSTITUTION        self,
            SELFCUR.BIZ_MAIN_TRANS_HIS    trans
        where    trans.TERM_ID=term.TERMINAL_ID 
            and term.TERMINAL_ID=device.TERMINAL_ID
                and device.MODEL_ID=model.MODEL_ID
                and term.INST_ID=self.INST_ID
                and self.PARENT_INST_ID=subbranch.INST_ID
                and subbranch.PARENT_INST_ID=branch.INST_ID
            -- 这里需要加入特殊符号来标识,用界面传过来的参数组成sql进行替换
            --XXXXYYYY--
        group by term.TERMINAL_ID
       )trans_basic
    left join(
     -- 联通缴费
        select trans.TERM_ID  TERM_ID,
                   count(1) PAY_LT_Count,
                   sum(trans.TRAN_AMT) PAY_LT_Money
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011402'
                   and BIZ_ID='009'
        group by trans.TERM_ID    
        ) trans_pay_lt
    on 
        trans_basic.BASIC_TERM_ID=trans_pay_lt.TERM_ID
    left join(
     -- 移动缴费
        select trans.TERM_ID  TERM_ID,
                   count(1) PAY_YD_Count,
                   sum(trans.TRAN_AMT) PAY_YD_Money
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011402'
                   and BIZ_ID='013'
        group by trans.TERM_ID    
        ) trans_pay_yd
    on 
        trans_basic.BASIC_TERM_ID=trans_pay_yd.TERM_ID
    left join(
     -- 查询电信缴费
        select trans.TERM_ID  TERM_ID,
                   count(1) PAY_DX_Count,
                   sum(trans.TRAN_AMT) PAY_DX_Money
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011402'
                   and BIZ_ID='012'
        group by trans.TERM_ID    
        ) trans_pay_dx
    on
        trans_basic.BASIC_TERM_ID=trans_pay_dx.TERM_ID
    left join(
     -- 电力缴费
        select trans.TERM_ID  TERM_ID,
                   count(1) PAY_DL_Count,
                   sum(trans.TRAN_AMT) PAY_DL_Money
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011402'
            --重庆电力014 三峡电力 008
                   and (BIZ_ID='014' or BIZ_ID='008')
        group by trans.TERM_ID    
        ) trans_pay_dl
    on 
        trans_basic.BASIC_TERM_ID=trans_pay_dl.TERM_ID
    left join(
     -- 自来水缴费
        select trans.TERM_ID  TERM_ID,
                   count(1) PAY_ZLS_Count,
                   sum(trans.TRAN_AMT) PAY_ZLS_Money
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011402'
            --水务2测试 004 水费 005
                   and (BIZ_ID='004' or BIZ_ID='005')
        group by trans.TERM_ID    
        ) trans_pay_zls
    on 
        trans_basic.BASIC_TERM_ID=trans_pay_zls.TERM_ID
    left join(
     -- 燃气缴费
        select trans.TERM_ID  TERM_ID,
                   count(1) PAY_RQ_Count,
                   sum(trans.TRAN_AMT) PAY_RQ_Money
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011402'
            --再生资源 003 
                   and BIZ_ID='003' 
        group by trans.TERM_ID    
        ) trans_pay_rq
    on 
        trans_basic.BASIC_TERM_ID=trans_pay_rq.TERM_ID
    left join(
     -- 现金交易 取款
        select trans.TERM_ID  TERM_ID,
                   count(1) CASH_QK_Count,
                   sum(trans.TRAN_AMT) CASH_QK_Money
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011101'
        group by trans.TERM_ID    
        ) trans_cash_qk
    on 
        trans_basic.BASIC_TERM_ID=trans_cash_qk.TERM_ID
    left join(
     -- 现金交易 存款
        select trans.TERM_ID  TERM_ID,
                   count(1) CASH_CK_Count,
                   sum(trans.TRAN_AMT) CASH_CK_Money
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011103'
        group by trans.TERM_ID    
        ) trans_cash_ck
    on 
        trans_basic.BASIC_TERM_ID=trans_cash_ck.TERM_ID
    left join(
     -- 现金交易 查询
     --余额查询1011001  查询交易明细1011002 积分查询 1011003
        select trans.TERM_ID  TERM_ID,
                   count(1) CASH_CX_Count
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011001' 
        group by trans.TERM_ID    
        ) trans_cash_cx
    on 
        trans_basic.BASIC_TERM_ID=trans_cash_cx.TERM_ID
        left join(
     -- 现金交易 转账
        select trans.TERM_ID  TERM_ID,
                   count(1) CASH_ZH_Count,
                   sum(trans.TRAN_AMT) CASH_ZH_Money
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011104'
        group by trans.TERM_ID    
        ) trans_cash_zh
    on 
        trans_basic.BASIC_TERM_ID=trans_cash_zh.TERM_ID
    left join(
     -- 补登折 存折
        select trans.TERM_ID  TERM_ID,
                   count(1) BUDENG_CZ_Count
        from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
            where  trans.P_TRANS_CODE='1011502'
        group by trans.TERM_ID    
        ) trans_budeng_cz
    on 
        trans_basic.BASIC_TERM_ID=trans_budeng_cz.TERM_ID

    以后用到left join 可以参考上面写的

    此外,贴出在birt 的数据集脚本beforeOpen

    var text="";
    // 交易时间 
    text += " and  trans.P_REQ_DATE  between  '"+ reportContext.getParameterValue("startDate").toString().replaceAll("-","") +"' and '"+reportContext.getParameterValue("endDate").toString().replaceAll("-","") + "'";
    
    // 分行
    var branchId=reportContext.getParameterValue("branchId"); 
       
    if(branchId != null && branchId!="" && branchId!="null"){  
        text += " and branch.INST_ID= " + branchId ;  
    }
    
    // 支行 
    var subId=reportContext.getParameterValue("subId"); 
       
    if(subId != null && subId!="" && subId!="null"){  
        text += " and subbranch.INST_ID= " + subId ;  
    }
    
    // 自助银行 
    var selfId=reportContext.getParameterValue("selfId"); 
       
    if(selfId != null && selfId!="" && selfId!="null"){  
        text += " and self.INST_ID= " + selfId;  
    }
    
    // 终端号
    var termId=reportContext.getParameterValue("termId"); 
       
    if(termId != null && termId!="" && termId!="null"){  
        text += " and trans.TERM_ID= " + termId ;  
    }
    
    // 柜员号
    var tellNo=reportContext.getParameterValue("tellNo"); 
       
    if(tellNo != null && tellNo!="" && tellNo!="null"){  
        text += " and trans.TELL_NO= " + tellNo ;  
    }
    
    // 设备状态
    var deviceState=reportContext.getParameterValue("deviceState"); 
       
    if(deviceState != null && deviceState!="" && deviceState!="null"){  
        text += " and device.DEVICE_STATE in ( " + deviceState + ")" ;  
    }
    
    // queryText中只有一个 --XXXXYYYY--
    var oldText=this.queryText.split("--XXXXYYYY--");
    this.queryText=oldText[0]+text+oldText[1];
    ----------- 赠人玫瑰,手有余香     如果本文对您有所帮助,动动手指扫一扫哟   么么哒 -----------


    未经作者 https://www.cnblogs.com/xin1006/ 梦相随1006 同意,不得擅自转载本文,否则后果自负
  • 相关阅读:
    再看到一则有关Anders的……
    arp好烦!123.8w8w8w,自己建了一个内网的nod32升级服务器。
    在看discuz nt 1.0。
    顺便说一下,这边速度好快?
    没什么可说。
    昨天看王建硕的blog,在说《胡适日记》的事。
    c# 深复制 浅复制(转)
    foreach yield
    Array
    JQuery.fn.extend(object) jQuery.extend(object) 转
  • 原文地址:https://www.cnblogs.com/xin1006/p/3898982.html
Copyright © 2020-2023  润新知