Oracle SQL Rewrite so 字段不返回无效标识符

少女使命

我正在创建一个视图,您无法创建一个列外部连接到子查询的视图,所以我找到了另一种方法来做到这一点,但现在我遇到了一个字段超出范围的问题。

create table registered (
crn number,
term varchar2(6));

create table course(
crn number,
term varchar2(6),
term_descrip varchar2(25));


insert into registered values (123,'202101');
insert into registered values (456,'202001');
insert into registered values (789,'202101');
insert into registered values (123,'202001');
insert into registered values (456,'201905');
insert into registered values (789,'202101');
insert into registered values (246,'202101');

insert into course values (123,'202001','Anatomy');
insert into course values (123,'202101','Physics');
insert into course values (456,'200001','English');
insert into course values (456,'201901','Algebra');
insert into course values (789,'199901','Gym');

原始查询

select r.crn,r.term, c.term_descrip from registered r
left join course c on c.crn =r.crn and c.term = 
(select max(c1.term) from course c1 where c.crn = c1.crn and
 c1.term <= r.term);

结果

克恩 学期 描述
123 202101 物理
456 202001 代数
789 202101 健身房
123 202001 解剖学
456 201905 代数
789 202101 健身房
246 202101 空值

新查询

select r.crn,r.term, max_term.term_descrip from registered r
 left join (select * from course c where 
            c.term = (select max(c1.term) from course c1 
                      where c.crn = c1.crn and c1.term <= r.term)) max_term
            on max_term.crn = r.crn 

r.term 获取无效标识符,因为它超出范围,我该如何重写以使其进入范围?非常感谢任何建议

阿斯滕克斯

如果您对的每个组合只有一排crn,并termcourse表中,那么你可以考虑横向连接:

select r.crn, r.term, c.term_descrip
from registered r 
  outer apply(
    select *
    from course c
    where c.crn = r.crn
      and c.term <= r.term
    order by c.term desc
    fetch first 1 rows only
  ) c
CRN | 期限 | TERM_DESCRIP 
--: | :----- | :------------ 
123 | 202101 | 物理学     
456 | 202001 | 代数     
789 | 202101 | 健身房         
123 | 202001 | 解剖学     
456 | 201905 | 代数     
789 | 202101 | 健身房         
246 | 202101 | 空值        

db<>在这里摆弄

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章