Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Masalah GABUNG :Perbaiki Pernyataan SQL untuk menyelesaikannya:ORA-01799:kolom tidak boleh digabungkan ke luar ke subkueri

Ini akan berfungsi jika Anda mengalihkan ini ke where klausa:

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
                                )

Namun, Anda kehilangan karakteristik 'gabungan luar kiri', jadi Anda juga ingin menambahkan:or fx.ftf_validitystartdate is null . Saya kira v_CurrentDate berasal dari "p". Sebaiknya gunakan alias tabel sebelum nama kolom.

Namun, saya mempertanyakan apakah subquery benar-benar dibutuhkan. Ini hanya diperlukan ketika ada lebih dari satu record yang memenuhi kondisi di dalam subquery. Kalau tidak, saya pikir Anda bisa mengubah on klausa menjadi:

    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. Bagaimana cara mengetahui apakah hibah terpilih diperoleh secara langsung atau melalui peran

  2. Temukan rentang dari serangkaian angka di SQL/Oracle

  3. Cara menulis klausa Order By sebelum klausa Where

  4. Java:Mengembalikan Data XMLType dari StoredProcedure, Penggunaan ojdbc6.jar xdb6.jar xmlparserv2.jar untuk interaksi Java ke PLSQL

  5. Menentukan apakah Field Data di Oracle bertipe Number