需求

自助设备交易统计

输入项

类型

可为空

备注

机构

选择

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,
               ) PAY_LT_Count,
               sum(trans.TRAN_AMT) PAY_LT_Money
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
               '
    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,
               ) PAY_YD_Count,
               sum(trans.TRAN_AMT) PAY_YD_Money
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
               '
    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,
               ) PAY_DX_Count,
               sum(trans.TRAN_AMT) PAY_DX_Money
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
               '
    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,
               ) PAY_DL_Count,
               sum(trans.TRAN_AMT) PAY_DL_Money
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
        --重庆电力014 三峡电力 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,
               ) PAY_ZLS_Count,
               sum(trans.TRAN_AMT) PAY_ZLS_Money
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
        --水务2测试 004 水费 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,
               ) PAY_RQ_Count,
               sum(trans.TRAN_AMT) PAY_RQ_Money
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
        --再生资源 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,
               ) CASH_QK_Count,
               sum(trans.TRAN_AMT) CASH_QK_Money
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
    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,
               ) CASH_CK_Count,
               sum(trans.TRAN_AMT) CASH_CK_Money
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
    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,
               ) CASH_CX_Count
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
    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,
               ) CASH_ZH_Count,
               sum(trans.TRAN_AMT) CASH_ZH_Money
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
    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,
               ) BUDENG_CZ_Count
    from   SELFCUR.BIZ_MAIN_TRANS_HIS trans
        '
    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];

oracle-外连接left join的应用的更多相关文章

  1. oracle 外连接以及用on和where 的区别

    Oracle  外连接(OUTER JOIN)包括以下: 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/FULL OUT ...

  2. 外连接OUTER JOIN(三十五)

    外连接OUTER JOIN   LEFT [OUTER] JOIN,左外连接 显示左表的全部记录及右表符合连接条件的记录 下面我们来演示一下,操作命令及部分结果如下: SELECT goods_id, ...

  3. Oracle 外连接和 (+)号的用法

    对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍.1. LEFT OUTER JOIN:左外关联 SELEC ...

  4. oracle——外连接查询

    一.问题描述 有时我们为了保留某个表中的数据,而该表中的数据在另外一个关联表中未必都存在对应,此时就应该试用外连接查询. 比如:两个表,产品表和子产品表 注:子产品的parent_product_id ...

  5. JOIN中的外连接(external join)

    外连接: ---外连接并不要求连接的两表的每一条记录在对方表中都有一条匹配记录.要保留所有记录(甚至这条记录没有匹配的记录也要保留)的表成为保留表.外连接可以一句连接表保 留左表,右表和全部表的行二进 ...

  6. oracle 表连接 - hash join 哈希连接

    一. hash 连接(哈希连接)原理 指的是两个表连接时, 先利用两表中记录较少的表在内存中建立 hash 表, 然后扫描记录较多的表并探測 hash 表, 找出与 hash 表相匹配的行来得到结果集 ...

  7. Oracle 左连接 left join、右连接right join说明

    Oracle 左.右连接 + 在等号 左边表示右连接  获取右表所有记录,即使左表没有对应匹配的记录. + 在等号 右边表示左连接  获取左表所有记录,即使右表没有对应匹配的记录. 例子: selec ...

  8. ORACLE外连接实例

    --查询各个部门工资范围,按照1000~2000,2000~3000....这样的格式显示人数 -------------------方法一 select dept.dname ,nvl(ano,) ...

  9. Oracle外连接与条件的组合

    由于很少使用SQL 92语法,今天写个outer join的时候被搞晕了.参考了一些例子后整理如下.总结,"inter join on"中的条件是对table进行joining的r ...

  10. Oracle左连接、右连接、全外连接以及(+)号用法(转)

    +:与附带的字段相连,和“+”相连的字段值,不管是否存在,都会展示 也就是带上相连接的字段 有数据了就显示,没数据就显示为null Oracle  外连接(OUTER JOIN) 左外连接(左边的表不 ...

随机推荐

  1. pwnable.kr brainfuck之write up

    I made a simple brain-fuck language emulation program written in C. The [ ] commands are not impleme ...

  2. 匿名委托与Lambda表达式

    通过使用匿名委托(匿名方法),使编程变得更加灵活,有关委托与匿名委托请参考我的前一篇Blog<委托与匿名委托>. 继续之前示例,代码如下: static void Main(string[ ...

  3. Java入门(5)——类和对象还有构造方法

    类     类和对象的概念: 类是对一群具有相同属性.行为的事物的统称.        类是抽象的.       人以类聚 物以群分 对象:      对象是现实生活中的1个具体存在.      看得 ...

  4. python专题-异常处理(基础)

    之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/cmt110/p/7464748.ht ...

  5. [2013-06-05]bat脚本设置DNS

    有时候需要切换本机dns,将网络环境转至测试环境 @echo off netsh interface ip set dns name="本地连接" source=static ad ...

  6. 给你的网站免费配置上 HTTPS 证书

    现在越来越多的网站或服务增加了 HTTPS 证书,苹果 AppStore.微信小程序等也已强制要求开发者需提供 HTTPS 的后端接口.在阿里云 / 腾讯云上有一年期的免费赛门铁克 SSL 证书可供尝 ...

  7. ireport导出中英文pdf

    准备: 报表开发工具:ireport 5.6.0 报表框架: jasperreport5.6.0 1.中文格式设置pdf fontname.isembedded.pdfencoding pdf fon ...

  8. c# List集合中First、Last、Single方法使用

    操作符 如果源序列是空的 源序列只包含一个元素 源序列包含多个元素 First 抛异常 返回该元素 返回第一个元素 FirstOrDefault 返回default(TSource) 返回该元素 返回 ...

  9. 201521123066《Java程序设计》第七周学习总结

    第7周-集合 本周学习总结 其他注意点: (1)List主要特征: 其元素以线性方式存储 集合中允许存放重复对象 (2)Set中的对象: 不按特定方式排序 没有重复对象 Set最多有一个null元素 ...

  10. 201521123111《Java程序设计》第3周学习总结

    1. 本章学习总结 你对于本章知识的学习总结 2. 书面作业 1. 代码阅读 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private ...