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

Subquery Berkorelasi bekerja secara berbeda untuk Oracle 12c dan 11g

Saya dapat menyelesaikan ini dengan solusi yang disediakan oleh Ahli SQL Chris Saxon menggunakan dengan WITH CTE. Saya sebelumnya menggunakannya sebagai tabel penggerak utama, tetapi ternyata, itu harus di kueri korelasi seperti di bawah ini:

with ar_kbox_details as ( select ab_info_n3 trx_id, ab_info_v5 box, ab_info_n1 amount from xxab_zz_vat_trx_gt where ab_info_v1 = 'AR' and ab_info_v5 <> 'tns:' union all select ab_info_n3 trx_id, ab_info_v6 box, ab_info_n2 amount from xxab_zz_vat_trx_gt where ab_info_v1 = 'AR' and ab_info_v6 <> 'tns:' ) SELECT XMLAGG(XMLCONCAT(XMLElement ("tns:SprzedazWiersz", xmlelement("tns:LpSprzedazy" , rownum), xmlelement("tns:KodKrajuNadaniaTIN", substr(ar_trx.tax_reg_num, 0, 2)), xmlelement("tns:NrKontrahenta" , substr(ar_trx.tax_reg_num, 2)), xmlelement("tns:NazwaKontrahenta" , ar_trx.cust_name), xmlelement("tns:DowodSprzedazy" , ar_trx.trx_number), xmlelement("tns:DataWystawienia" , TO_CHAR(ar_trx.invoice_date,'RRRR-MM-DD')), Case When ar_trx.sales_date is not null Then xmlelement("tns:DataSprzedazy" , TO_CHAR(ar_trx.sales_date,'RRRR-MM-DD')) END -- Document Type ,(select distinct xmlagg(xmlconcat(xmlelement("tns:TypDokumentu", ab_info_v15))) From xxab_zz_vat_trx_gt Where ab_info_v1 = 'AR' and ab_info_n3 = ar_trx.trx_id and ab_info_v16 = 'ORA_JEPL_DOCUMENT_TYPE') -- product category code ,(select distinct xmlagg(xmlconcat(xmlelement(evalname(ab_info_v13), 1))) from xxab_zz_vat_trx_gt Where ab_info_V1 = 'AR' and ab_info_v13 <> 'tns:' and ab_info_n3 = ar_trx.trx_id) -- Trade Attributes ,(select distinct xmlagg(xmlconcat(xmlelement(evalname(DECODE(TRADE_ATTRIBUTE_VALUES, '1', 'tns:MPP', TRADE_ATTRIBUTE_VALUES)), 1)) order by case TRADE_ATTRIBUTE_VALUES when 'tns:SW' THEN 1 when 'tns:EE' THEN 2 when 'tns:TP' THEN 3 when 'tns:TT_WNT' then 4 when 'tns:TT_D' THEN 5 when 'tns:MR_T' THEN 6 when 'tns:MR_UZ' THEN 7 when 'tns:I_42' THEN 8 when 'tns:I_63' THEN 9 when 'tns:B_SPV' THEN 10 when 'tns:B_SPV_DOSTAWA' THEN 11 when 'tns:B_MPV_PROWIZJA' THEN 12 when 'tns:MPP' THEN 13 ELSE 14 END) from xxab_zz_vat_trx_gt unpivot (TRADE_ATTRIBUTE_VALUES for TRADE_ATTRIBUTES in (ab_info_v12, ab_info_v20)) Where ab_info_V1 = 'AR' and TRADE_ATTRIBUTE_VALUES not in ('tns:', 'tns:IMP', '0') and ab_info_n3 = ar_trx.trx_id ) --KBoxes ,(select xmlagg(xmlconcat(xmlelement(evalname(fnd_box.box),ROUND(sum(nvl(akd.amount, 0)),2)))) from ar_kbox_details akd , (SELECT 'tns:K_'||(LEVEL + 9) box FROM dual CONNECT BY LEVEL <= 27) fnd_box where fnd_box.box = akd.box (+) and ar_trx.trx_id = akd.trx_id (+) group by fnd_box.box) ))) From ( Select distinct ab_info_n3 trx_id , ab_info_v2 trx_number , ab_info_d1 sales_date , ab_info_d3 invoice_date , ab_info_v3 cust_name , ab_info_v17 cust_addr , ab_info_v7 tax_reg_num From xxab_zz_vat_trx_gt Where ab_info_v1 = 'AR' Order by 3,4) ar_trx


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sumber data JNDI ke oracle dengan grails 1.3

  2. masalah rownum dalam kueri Oracle

  3. Database Oracle 12c Kesalahan saat mencoba menyambung:Adaptor Jaringan tidak dapat membuat sambungan

  4. Pengembang Oracle SQL:Tes gagal:Adaptor Jaringan tidak dapat membuat koneksi?

  5. Bagaimana saya bisa melakukan kueri ini di Oracle