Oracle EBS/APPS: нулевое значение в столбце DRAFT_INVOICE_NUM внутри таблицы PA_DRAFT_INVOICE_DETAILS_ALL. Как получить строки?

У меня такой запрос:

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;

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

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

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

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

1 ответ

Это потому, что 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
  )

Для того, чтобы ВСЕГДА вернуться ложным, так что ваш запрос возвращает 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
  )
Другие вопросы по тегам