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
)