首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle SQL在同一语句中的自联接

Oracle SQL在同一语句中的自联接
EN

Stack Overflow用户
提问于 2019-03-05 18:07:26
回答 1查看 131关注 0票数 0

我正在努力实现以下目标。任何帮助我们都将不胜感激!

1.在第一个表中,对一个主交易与其对应的抵消交易进行自联接。2.在第二个表中,找到价格与对应的抵消交易不匹配的所有主要交易。

我不认为第二个self-join是可行的。这将链接价格表中的主交易和抵销交易,并查找在某些价格日期价格不匹配的情况。

代码语言:javascript
复制
SELECT *
FROM transactions tran1 transactions tran2
    ,prices pr1
    ,prices pr1
WHERE tran1.tran_type = 1 --Original deal 
    AND tran2.tran_type = 2 -- Offset deal 
    AND tran1.tran_num = tran2.offset_tran_num
    AND tran1.ins_num = pr1.ins_num
    AND tran2.ins_num = pr2.ins_num
    AND pr1.ins_num = pr2.ins_num
    AND pr1.profile_num = pr2.profile_num
    AND pr1.price_date = pr2.price_date
    AND pr1.value != pr2.value
EN

回答 1

Stack Overflow用户

发布于 2019-03-05 18:19:04

这条语句可以从使用正确的连接语法中受益,而不是这种较旧的样式-在尝试转换它时,立即可以看到别名'pr1‘被使用了两次,您本打算使用'pr2’

假设这是正确的(假设您可能需要一些帮助才能将其转换为现代语法),您将拥有:

代码语言:javascript
复制
SELECT *
FROM transactions tran1
inner join prices pr1 on pr1.ins_num = tran1.ins_num 
inner join prices pr2 on pr2.ins_num = pr1.ins_num
                      and pr2.profile_num = pr1.profile_num 
                      and pr2.price_date = pr1.price_date
                      and pr2.value != pr1.value
inner join transactions tran2 on tran2.ins_num = pr2.ins_num 
                      and tran2.offset_tran_num = tran1.tran_num 
WHERE tran1.tran_type = 1 --Original deal
AND tran2.tran_type = 2 -- Offset deal 

它更容易阅读,但我们需要更多的信息,输入+预期输出来确认它是否是你想要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55000261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档