oracle 列不能外部联接到子查询,ORA-01799 列不能外部联接到子查询

在Oracle SQL查询中遇到ORA-01799错误,该错误发生在尝试在外连接的ON条件中使用子查询时。为解决此问题,可以将子查询结果作为临时表进行关联,或者创建函数获取子查询结果。文中提供了两种解决方案,并比较了执行效率,推荐使用第一种方法。
摘要由CSDN通过智能技术生成

需求及问题

在一些表关联查询中,当存在源表和关联表都有过虑条件(and)时,如果其中一个条件不符合,结果就有可能为空;

而实际上我们要求结果集中,条件不符合的显示空,但其它条件正常的,依然要显示。

1.要达到目的,不符合的数据显示为空,符合的照常显示

bce9d5e5bd0e31fa3636add7ca221a79.png

2.直接在where里放入条件,当有一个不符合时,结果集可能为空

/*需求和问题*/

/*1.where中放两个查询条件,有可能数据集为空*/

selec distinct t t.sec_code, t.sec_sname,

decode(t1.chng_pct,null,'--',TO_CHAR(t1.chng_pct,'FM9999999999999990.90')) chng_pct, t.trans_type, t.tradedate

from mv_stk_trans_info t left outer join mv_sec_mkt t1 on t.sec_unicode = t1.sec_unicode

where t.tradedate=(select max(tradedate) from mv_stk_trans_info )

and t1.tradedate=(select max(tradedate) from mv_stk_trans_info )

order by t.sec_code asc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值