oracle使用LEFT JOIN关联产生的问题在查询结果中使用CASE WHEN 无法判断
oracle使用LEFT JOIN关联产生的问题在查询结果中使用CASE WHEN 无法判断
查询方式一:
SELECT
CASE WHEN (SELECT CAST(SUM(CASE
WHEN (ALLOCABLE_PRIME_CURRENCY_VALUE IS NULL AND STATE_IND = 1) THEN
NVL(PRIME_CURRENCY_VALUE, 0)
ELSE
NVL(ALLOCABLE_PRIME_CURRENCY_VALUE, 0) END) AS NUMBER(18,6)) AS ALLOCABLE_PRIME_CURRENCY_VALUE
FROM RP_LEDGER_ITEM R
WHERE R.SOURCE_ID = RP_CASH_MOVEMENT.CASH_MOVEMENT_ID
AND SOURCE_TYPE = 'CASH') = 0 THEN 0 ELSE 1 END,
(SELECT SUM(CASE
WHEN (ALLOCABLE_PRIME_CURRENCY_VALUE IS NULL AND STATE_IND = 1) THEN
NVL(PRIME_CURRENCY_VALUE, 0)
ELSE
NVL(ALLOCABLE_PRIME_CURRENCY_VALUE, 0) END) AS ALLOCABLE_PRIME_CURRENCY_VALUE
FROM RP_LEDGER_ITEM R
WHERE R.SOURCE_ID = RP_CASH_MOVEMENT.CASH_MOVEMENT_ID
AND SOURCE_TYPE = 'CASH'),
RP_LEDGER_ITEM.LEDGER_ITEM_ID
FROM RP_CASH_MOVEMENT
LEFT JOIN RP_LEDGER_ITEM
ON RP_LEDGER_ITEM.CASH_MOVEMENT_ID = RP_CASH_MOVEMENT.CASH_MOVEMENT_ID
AND RP_LEDGER_ITEM.CASH_MOVEMENT_ID IS NOT NULL
WHERE NVL(RP_CASH_MOVEMENT.IS_RESERVE_FUND, '') = ''
AND 1 = 1
AND RP_CASH_MOVEMENT.RP_ID = 'R'
AND RP_CASH_MOVEMENT.INPUT_DATE >=
TO_DATE('2014/2/1 0:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND (RP_CASH_MOVEMENT.OFFICE_ID = '0B4B12XOG33MO')
查询结果如下:

查询方式二:
SELECT
CASE WHEN (SELECT CAST(SUM(CASE
WHEN (ALLOCABLE_PRIME_CURRENCY_VALUE IS NULL AND STATE_IND = 1) THEN
NVL(PRIME_CURRENCY_VALUE, 0)
ELSE
NVL(ALLOCABLE_PRIME_CURRENCY_VALUE, 0) END) AS NUMBER(18,6)) AS ALLOCABLE_PRIME_CURRENCY_VALUE
FROM RP_LEDGER_ITEM R
WHERE R.SOURCE_ID = RP_CASH_MOVEMENT.CASH_MOVEMENT_ID
AND SOURCE_TYPE = 'CASH') = 0 THEN 0 ELSE 1 END,
(SELECT SUM(CASE
WHEN (ALLOCABLE_PRIME_CURRENCY_VALUE IS NULL AND STATE_IND = 1) THEN
NVL(PRIME_CURRENCY_VALUE, 0)
ELSE
NVL(ALLOCABLE_PRIME_CURRENCY_VALUE, 0) END) AS ALLOCABLE_PRIME_CURRENCY_VALUE
FROM RP_LEDGER_ITEM R
WHERE R.SOURCE_ID = RP_CASH_MOVEMENT.CASH_MOVEMENT_ID
AND SOURCE_TYPE = 'CASH'),
'' LEDGER_ITEM_ID
FROM RP_CASH_MOVEMENT
LEFT JOIN RP_LEDGER_ITEM
ON RP_LEDGER_ITEM.CASH_MOVEMENT_ID = RP_CASH_MOVEMENT.CASH_MOVEMENT_ID
AND RP_LEDGER_ITEM.CASH_MOVEMENT_ID IS NOT NULL
WHERE NVL(RP_CASH_MOVEMENT.IS_RESERVE_FUND, '') = ''
AND 1 = 1
AND RP_CASH_MOVEMENT.RP_ID = 'R'
AND RP_CASH_MOVEMENT.INPUT_DATE >=
TO_DATE('2014/2/1 0:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND (RP_CASH_MOVEMENT.OFFICE_ID = '0B4B12XOG33MO')
查询结果如图:

2条sql语句最大的区别在于

有些可能表达不清楚,
主要原因我也不知道,如果谁有兴趣可以回复我!
oracle使用LEFT JOIN关联产生的问题在查询结果中使用CASE WHEN 无法判断的更多相关文章
- Hibernate中用left join(左外连接)查询映射中没有关联关系的两个表记录问题
一.问题背景 分账表split_summary结构如下: create table SPLIT_SUMMARY ( uuid VARCHAR2(32) not null, star_tdate VAR ...
- Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划
V$SQL_PLAN视图提供了一种方法,可用于检查仍位于库高速缓存的游标的执行计划.此视图中的信息与 PLAN_TABLE 视图中的信息非常类似.但是,EXPLAIN PLAN 显示的是执行相应语句时 ...
- ORACLE的SQL JOIN方式小结
在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结),官方的解释如下所示 A join is a query that combines row ...
- ORACLE的SQL JOIN方式大全
ORACLE的SQL JOIN方式大全 在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结),官方的解释如下所示 A join is a que ...
- oracle update left join 写法
oracle update left join 写法 (修改某列,条件字段在关联表中) 案例: E:考核表 X,:用户表 USERNAME 关联 需求:修改营业部最高分 分析:通过登录账号的营业部OR ...
- oracle使用+简写左关联出现的结果集不一致问题
这是使用(+)的sql语句(已简写) select a.id,b.num from a,b where a.id=b.id(+) and b.num>10 这是使用left join的sql语句 ...
- JOIN关联表中ON,WHERE后面跟条件的区别
select * from td left join (select case_id as sup_case_id , count(*) supervise_number from td_kcdc ...
- Oracle两张表关联批量更新其中一张表的数据
Oracle两张表关联批量更新其中一张表的数据 方法一(推荐): UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE EXI ...
- 深入理解mysql的自连接和join关联
一.mysql自连接 mysql有时在信息查询时需要进行对自身连接(自连接),所以我们需要为表定义别名.我们举例说明,下面是商品采购表,我们需要找到采购价格比惠惠高的所有信息. 一般情况我们看到这张表 ...
随机推荐
- 读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- Android基础之响应Menu键弹出菜单Demo
对于Android我也不是很熟悉,只是学习一些基本内容就OK.所以写的内容也很简单.本Demo要实现的效果就点击Menu键将弹出一个菜单并响应点击菜单项事件. 一.废话少说直接上代码.其实就是重写两个 ...
- 【HDOJ】2966 In case of failure
KD树,这东西其实在ML经常被使用,不过30s的时限还是第一次见. /* 2966 */ #include <iostream> #include <string> #incl ...
- poj1150
这道题告诉我们递推一定要慢慢细细的推Pmn=n!/m!,我们可以先考虑n!的最后一位是什么首先最后一位非0位我们首先想到把0都干掉也就是先把2和5提出来,这两个其实是同样的方法对于N!中有多少个因数2 ...
- (转载)vsftpd简易配置
(转载)http://licong.blog.51cto.com/542131/145748/ 写篇关于vsftp配置的文章,加深自己的记忆,便于自己查阅,同时也希望能给其他需要的朋友一点借鉴.本文如 ...
- 高德地图搜索提示获取信息回传activity刷新ui(二)
应用场景: 在主activity中点击进入到另一个activity搜索提示,获取经纬度,点确定返回到主activity,虽然说需求很奇葩,但是遇到了没办法.. 主要包含两部分,搜索提示+activit ...
- HTMLTestRunner生成空白resault.html
发现一奇葩问题,用idle或pyscripter执行脚本,生成的是空白html,通过cmd,进入脚本目录执行python xx.py,却能生成测试报告. HTMLTestRunner 例子 #codi ...
- Unity FisheyeShader using Spherical Mapping
Shader "Hidden/FisheyeShader" { Properties { _MainTex ("Base (RGB)", 2D) = " ...
- 局域网内linux由ip反解析主机名
- Digital Root - SGU 118(高精度运算)
题目大意:有K组测试数据,然后每组有N个正整数,A1,A2,A3.....An,求出 A1 + A1*A2 + A1*A2*A3 + .......A1*A2*...An 的数根. 分析:有个对9取余 ...