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 21:17:37 浏览: 141
smdk-tools.rar_libusb_libusb linux_linux libusb_smdk
在 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 子句。
阅读全文