Oracle EBS / APPS: нулевое значение в столбце DRAFT_INVOICE_NUM внутри таблицы PA_DRAFT_INVOICE_DETAILS_ALL. Как получить строки? - PullRequest
0 голосов
/ 10 июля 2020

У меня следующий запрос:

select 
    ppdid.EXPENDITURE_ITEM_ID, 
    ppdid.DRAFT_INVOICE_NUM,
    ppdid.BILL_AMOUNT,
    ppdid.CREATION_DATE,    
    ppeia.EXPENDITURE_ITEM_DATE, 
    pppa.SEGMENT1 PROJECT_NUMBER,    
    ppdia.DRAFT_INVOICE_NUM,
    ppdia.RA_INVOICE_NUMBER
from
    PA.PA_DRAFT_INVOICE_DETAILS_ALL ppdid,
    PA.PA_EXPENDITURE_ITEMS_ALL ppeia,
    PA.PA_PROJECTS_ALL pppa,
    PA.PA_DRAFT_INVOICES_ALL ppdia
where ppdid.EXPENDITURE_ITEM_ID = ppeia.EXPENDITURE_ITEM_ID
and   ppdid.PROJECT_ID          = pppa.PROJECT_ID
and   ppdid.PROJECT_ID          = ppdia.PROJECT_ID
--and ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM
and   (   ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM
       or ppdia.DRAFT_INVOICE_NUM = ppdid.ORIG_DRAFT_INVOICE_NUM
      )  
and   pppa.SEGMENT1 = '123456' --fictive number
and   ppdia.GL_PERIOD_NAME = '05-2020'
order by ppdid.DRAFT_INVOICE_NUM;

Проблема связана со счетом, который был создан в APR-2020 и зачислен в MAY-2020. Транзакции во всех таких случаях (исходный счет и счет-фактура в разные месяцы, И не перевыпущенный) не будут получены запросом, даже если я выберу условие pppdia.GL_PERIOD_NAME.

Я попытался поставить (+) на разных сторонах соединений, но результат тот же.

Есть идеи, как это обойти?

Спасибо, Алекс

1 Ответ

0 голосов
/ 11 июля 2020

Это потому, что NULL не равно ничему, включая другой NULL. Это приводит к тому, что ваш предикат

and
--ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM
  (
  ppdid.DRAFT_INVOICE_NUM  = ppdia.DRAFT_INVOICE_NUM  or ppdia.DRAFT_INVOICE_NUM = ppdid.ORIG_DRAFT_INVOICE_NUM
  )

To ВСЕГДА возвращает false, поэтому ваш запрос возвращает 0 строк. Добавьте или IS Null в свой список OR

and
--ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM
  (  ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM  
  or ppdia.DRAFT_INVOICE_NUM = ppdid.ORIG_DRAFT_INVOICE_NUM
  or ppdid.DRAFT_INVOICE_NUM is null
  )
...