Select * From SR_LC_SHIPMENT_RELEASES srf, SR_LC_RELEASE_CONSIGNMENTS cnr, SR_LC_SHPT_RLS_PAYMENTS pay, SR_LC_SHPT_RLS_CHARGES charge Where srf.RELEASE_CONSIGNMENT_UID=cnr.RELEASE_CONSIGNMENT_UID AND srf.SHIPMENT_RELEASE_UID=pay.SHIPMENT_RELEASE_UID(+) AND 'SC'=pay.CHARGE_TYPE(+) AND srf.SHIPMENT_RELEASE_UID=charge.SHIPMENT_RELEASE_UID(+) AND 'SC'=charge.CHARGE_TYPE(+);上面的oracle的写法,请转换为sparksql的写法。
时间: 2023-07-16 18:17:37 浏览: 43
在 Spark SQL 中,可以使用以下语句来实现与 Oracle 中相同的查询:
```
SELECT *
FROM SR_LC_SHIPMENT_RELEASES srf
JOIN SR_LC_RELEASE_CONSIGNMENTS cnr ON srf.RELEASE_CONSIGNMENT_UID = cnr.RELEASE_CONSIGNMENT_UID
LEFT JOIN SR_LC_SHPT_RLS_PAYMENTS pay ON srf.SHIPMENT_RELEASE_UID = pay.SHIPMENT_RELEASE_UID AND pay.CHARGE_TYPE = 'SC'
LEFT JOIN SR_LC_SHPT_RLS_CHARGES charge ON srf.SHIPMENT_RELEASE_UID = charge.SHIPMENT_RELEASE_UID AND charge.CHARGE_TYPE = 'SC';
```
需要注意的是,Spark SQL 中的 JOIN 默认为 INNER JOIN,因此需要使用 LEFT JOIN 替代 Oracle 中的 OUTER JOIN。此外,Spark SQL 中的 JOIN 条件可以直接使用 ON 进行指定,而不需要使用 WHERE 子句。
相关问题
__releases(q->queue_lock)
`__releases(q->queue_lock)`是Linux内核中的一种锁注释,用于指示当前代码路径将释放指定的锁。在这种情况下,`__releases(q->queue_lock)`表示当前代码路径将释放`q->queue_lock`锁。这个注释可以帮助其他开发人员更好地理解代码,特别是在多线程环境中使用锁时,这些注释可以帮助避免死锁和其他线程同步问题。
D__KERNEL__
D__KERNEL__是一个宏定义,用于指示代码中的一部分是内核代码。在引用中,__kernel是一个内核属性,用于指定内核地址空间。在引用中,__acquires和__releases是用于指定代码中的锁定和释放锁定的属性。
由于提供的引用内容较为抽象,无法直接给出具体的介绍或演示。如果您能提供更具体的问题或上下文,我将能够为您提供更准确的回答。