sql - Oracle SQL 自联接在同一条语句中
问题描述
我正在努力实现以下目标。任何帮助将不胜感激!
1.在第一个表中,对主要交易及其对应的抵消交易进行自连接 2.在第二个表中,找到价格与相应抵消交易不匹配的所有主要交易。
我认为第二个自加入行不通。这应该将价格表中的主要交易和抵消交易联系起来,并找出某些价格日期的价格不匹配的情况。
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
解决方案
此语句可以受益于使用正确的连接语法,而不是这种旧样式 - 在尝试转换它时,您可以立即看到别名 'pr1' 被使用了两次,你的意思是使用 'pr2'
鉴于这是正确的(并假设您可能需要一些帮助才能将其转换为现代语法),您有:
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
它更容易阅读,但我们需要更多信息、输入 + 预期输出来确认它是否是您想要的。
推荐阅读
- javascript - 如何确定用户是否在 Javascript 中附加了键盘
- java - 使用 TomEE 嵌入式和 Microprofile 容错进行集成测试
- javafx - JavaFX按钮背景向右溢出1px
- php - Sql CURDATE() 下个月不工作
- ios - 从 DynamoDB 中的表中获取信息
- r - 创建表达式测试以查看 R 中的 `as.formula('X ~ 1')` 是否包含截距?
- java - 对两个没有任何关系的不同表使用 CriteriaQuery
- assembly - 可以获得 Keypress 并打印它的组装操作系统
- android - layout_collapseMode:PIN 不起作用
- selenium - Selenium WebDriver C#——XPath 不工作