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

Truy vấn con có liên quan hoạt động khác nhau cho Oracle 12c và 11g

Tôi có thể giải quyết vấn đề này bằng giải pháp do Chuyên gia SQL Chris Saxon cung cấp sử dụng với WITH CTE. Trước đây tôi đã sử dụng nó làm bảng điều khiển chính, nhưng hóa ra, nó phải nằm ở các truy vấn tương quan như bên dưới:

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. Trả về kết quả ngay cả cho các phần tử trong danh sách IN không tồn tại trong bảng

  2. Giá trị nhận dạng không hợp lệ trong truy vấn lồng đôi với ORDER BY và ROWNUM

  3. InstallAllOracleASPNETProviders không hoạt động chính xác

  4. Giới thiệu về phần tử định dạng V trong Oracle

  5. ORA 01400 và ORA 02296:Không thể chèn null hoặc sửa đổi các thuộc tính cột đã thêm thành NOT NULL