Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sự cố JOIN:Sửa câu lệnh SQL để giải quyết:ORA-01799:một cột có thể không được nối bên ngoài với một truy vấn con

Nó sẽ hoạt động nếu bạn chuyển cái này sang where mệnh đề:

select *
from acc_accounts acc join
     kp_paramcore p
     on acc.account_no = p.accountnum and
        acc.suffix = p.suffixc LEFT JOIN
     ftf_rates fx
     ON p.maturestart = fx.ftf_vadealtsinir and
        p.maturefinish = fx.ftf_vadeustsinir and
        fx.statusrec = 'A' and
        fx.currencycode = acc.currencsw_kod and
        fx.status= 'A'
 where fx.ftf_validitystartdate= (SELECT MAX(ff.ftf_validitystartdate)
                                 FROM ftf_rates ff
                                 WHERE ff.status = 'A' and
                                       ff.statusrec = 'A'
                                       p.v_CurrentDate BETWEEN ff.systemstartdate AND ff.systemfinishdate                                            AND ff.currencycode = acc.currencsw_kod
                                )

Tuy nhiên, bạn mất các đặc điểm 'nối ngoài cùng bên trái', vì vậy bạn cũng muốn thêm:or fx.ftf_validitystartdate is null . Tôi đoán rằng v_CurrentDate đến từ "p". Bạn nên sử dụng bí danh bảng trước tên cột.

Tuy nhiên, tôi đặt câu hỏi liệu truy vấn con có thực sự cần thiết hay không. Nó chỉ cần thiết khi có nhiều hơn một bản ghi đáp ứng các điều kiện bên trong truy vấn con. Nếu không, tôi nghĩ bạn chỉ có thể thay đổi on mệnh đề là:

    ON p.maturestart = fx.ftf_vadealtsinir and
       p.maturefinish = fx.ftf_vadeustsinir and
       fx.statusrec = 'A' and
       fx.currencycode = acc.currencsw_kod and
       fx.status= 'A'and
       p.v_CurrentDate BETWEEN fx.systemstartdate AND fx.systemfinishdate


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách in nhiều báo cáo có mã vạch \ hoặc nhiều mã vạch trong một báo cáo

  2. Thay đổi truy vấn này thành nhóm các hàng và lọc ra tất cả các hàng ngoài hàng có giá trị nhỏ nhất

  3. Làm cách nào để chọn một tên Node cụ thể và các giá trị của nó trong XML bằng cách sử dụng truy vấn SQL của Oracle?

  4. Gợi ý song song trong SQL động của Oracle có chạy song song không?

  5. Sự khác biệt giữa VARCHAR2 (10 CHAR) và NVARCHAR2 (10)