需求

自助设备交易统计

输入项

类型

可为空

备注

机构

选择

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. tomcat替换.class文件并没有生效的原因(失效原因)(转)

    紧急关头难免会替换class文件,但一定要注意一下几点. 1.小心class内中的project 的类的后,替换文件需要加上 $classMapper这个类, 编译成class的时候,会把public ...

  2. 【Spring 核心】AOP 面向切面编程

    一.什么是面向切面编程? 二.通过切点来选择连接点 三.使用注解创建切面 四.在XML中声明切面 五.注入AspectJ切面

  3. My Favorite Color

    我喜欢的颜色收藏.. <H4>标签的颜色: Html中行内样式的设置.. Html中行内样式的设置.. Html中行内样式的设置.. Html中行内样式的设置.. <html> ...

  4. 借助扩展事件查看SQL 2016备份和还原操作的内幕

    当遇到备份或者还原操作占用较长时间时,很多人会问: 备份/还原是不是僵死了?要不要kill掉,再重来? 到底是哪一个部分的操作占用较长时间? 到底现在进行到什么阶段了? 在SQL 2016 之前,要回 ...

  5. Pyinstaller(python打包为exe文件)

      需求分析: python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速. 当然打包的脚本似乎不是在所有的win平台下都能使用, ...

  6. RabbitMQ核心概念篇

    RabbitMQ介绍 一.RabbitMQ使用场景 RabbitMQ他是一个消息中间件,说道消息中间件[最主要的作用:信息的缓冲区]还是的从应用场景来看下: 1.系统集成与分布式系统的设计 各种子系统 ...

  7. C++三种野指针及应对/内存泄露

     野指针,也就是指向不可用内存区域的指针.如果对野指针进行操作,将会使程序发生不可预知的错误,甚至可能直接引起崩溃.         野指针不是NULL指针,是指向"垃圾"内存的指 ...

  8. ajax请求成功前loading

    1.jquery方式 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  9. Qt--自定义Model

    众所周知,Qt提供了一套Model/View框架供开发者使用,Model用来提供数据, View则用来提供视觉层的显示.实际上这是一套遵循MVC设计模式的GUI框架,因为Qt还提供了默认的Delega ...

  10. 移动端图片放大滑动查看-插件photoswipe的使用

    最近在开发项目的时候,遇到一个需求,需要移动端实现放大查看图片的功能,然后我就在网上搜索了一下资料,看到了photoswipe这个插件,后来试了试,确实挺好用的,它可以实现手势放大缩小查看图片,左右滑 ...