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,
) 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的应用的更多相关文章
- oracle 外连接以及用on和where 的区别
Oracle 外连接(OUTER JOIN)包括以下: 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/FULL OUT ...
- 外连接OUTER JOIN(三十五)
外连接OUTER JOIN LEFT [OUTER] JOIN,左外连接 显示左表的全部记录及右表符合连接条件的记录 下面我们来演示一下,操作命令及部分结果如下: SELECT goods_id, ...
- Oracle 外连接和 (+)号的用法
对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍.1. LEFT OUTER JOIN:左外关联 SELEC ...
- oracle——外连接查询
一.问题描述 有时我们为了保留某个表中的数据,而该表中的数据在另外一个关联表中未必都存在对应,此时就应该试用外连接查询. 比如:两个表,产品表和子产品表 注:子产品的parent_product_id ...
- JOIN中的外连接(external join)
外连接: ---外连接并不要求连接的两表的每一条记录在对方表中都有一条匹配记录.要保留所有记录(甚至这条记录没有匹配的记录也要保留)的表成为保留表.外连接可以一句连接表保 留左表,右表和全部表的行二进 ...
- oracle 表连接 - hash join 哈希连接
一. hash 连接(哈希连接)原理 指的是两个表连接时, 先利用两表中记录较少的表在内存中建立 hash 表, 然后扫描记录较多的表并探測 hash 表, 找出与 hash 表相匹配的行来得到结果集 ...
- Oracle 左连接 left join、右连接right join说明
Oracle 左.右连接 + 在等号 左边表示右连接 获取右表所有记录,即使左表没有对应匹配的记录. + 在等号 右边表示左连接 获取左表所有记录,即使右表没有对应匹配的记录. 例子: selec ...
- ORACLE外连接实例
--查询各个部门工资范围,按照1000~2000,2000~3000....这样的格式显示人数 -------------------方法一 select dept.dname ,nvl(ano,) ...
- Oracle外连接与条件的组合
由于很少使用SQL 92语法,今天写个outer join的时候被搞晕了.参考了一些例子后整理如下.总结,"inter join on"中的条件是对table进行joining的r ...
- Oracle左连接、右连接、全外连接以及(+)号用法(转)
+:与附带的字段相连,和“+”相连的字段值,不管是否存在,都会展示 也就是带上相连接的字段 有数据了就显示,没数据就显示为null Oracle 外连接(OUTER JOIN) 左外连接(左边的表不 ...
随机推荐
- Eclipse字体颜色的设置方法
Eclipse字体颜色的设置方法.. ----------------- .---------------------此时我们就希望设置一下字体eclipse字体颜色,让他像其它编辑器一样的,有不同的 ...
- 给MySQL_5.7 配置环境变量
给MySQL_5.7 配置环境变量... 1.右键我的电脑--选择属性 2.选择高级系统设置 3.根据MySQL的安装路径.来配置MYSQL_HOME环境变量 找到MySQL5.7的安装根目录 4 ...
- Python量化投资知识总结贴
Ricequant 量化社区的初衷让各位爱好量化的人士可以碰撞思维,在分享和争辩中学习到有用且实战的量化知识.有赖于各位在社区中贡献满满的干货以及有质量的讨论,从编程入门教学到技术指标再到多因子选股. ...
- BotVS开发基础—2.5 策略交互
一.代码部分 isOpen = False; # 是否 开仓 price = 0; # 全局变量 价格 amount = 0; # 全局变量 下单量 def exec_command(command) ...
- 重拾java中的 i++ 和 ++i
java中的 i++ 和 ++i 首先记着要点: 1.i++是先取值再运算. 2.++i是先运算后取值. 举个栗子: int y,x=3;y=(++x)+(++x); 则y=? 分析:先运算后取值,先 ...
- 【渗透课程】特别篇-主流网站程序Oday大全以及拿shell思路
版权和内容说明: 这篇文章不是本站编写,是从网络上摘抄的,但是经过了本站的改写优化,并将内容,格式规范化. 本篇说明:这篇文章结合了前辈们前几年一路挖掘出来的主流程序漏洞以及思路, 小编写在前面是想让 ...
- postman接口测试工具完整教程
第一部分:基础篇 postman:4.5.11.安装postman进入postman官网,如果是mac系统可以直接点击mac app安装 如果是windows的话,需要在windows下安装chrom ...
- 归并排序—Java版
一开始做算法的时候,感觉递归算法很绕,所以我就在阅读别人代码的基础上,对代码每一步都添加自己的注解,方便我以后的学习. public class MergeSort { /** * 归并排序 * @p ...
- [2017-08-07]ABP系列——QuickStartA:概述、思想、入门和HelloWorld
唔,说好的文章,欠了好久,先水一篇. 本系列目录:Abp介绍和经验分享-目录 概述 先表个态:对绝大多数人来说,ABP是成熟的,足以用到生产环境的. 最适合的:业务非常复杂且不追求极致性能的(这里并不 ...
- 使用 Palette 让你的 UI 色彩与内容更贴合
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 每周会统一更新到这里,如果喜欢,可关注公众号获取最新文章. 未经允许,不得转载. 一.前言 今天介绍一个 An ...