oracle ebs/apps:表pa\u draft\u invoice\u details\u all中draft\u invoice\u num列的值为空如何取行?

nnvyjq4y  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(429)

我有以下疑问:

  1. select
  2. ppdid.EXPENDITURE_ITEM_ID,
  3. ppdid.DRAFT_INVOICE_NUM,
  4. ppdid.BILL_AMOUNT,
  5. ppdid.CREATION_DATE,
  6. ppeia.EXPENDITURE_ITEM_DATE,
  7. pppa.SEGMENT1 PROJECT_NUMBER,
  8. ppdia.DRAFT_INVOICE_NUM,
  9. ppdia.RA_INVOICE_NUMBER
  10. from
  11. PA.PA_DRAFT_INVOICE_DETAILS_ALL ppdid,
  12. PA.PA_EXPENDITURE_ITEMS_ALL ppeia,
  13. PA.PA_PROJECTS_ALL pppa,
  14. PA.PA_DRAFT_INVOICES_ALL ppdia
  15. where ppdid.EXPENDITURE_ITEM_ID = ppeia.EXPENDITURE_ITEM_ID
  16. and ppdid.PROJECT_ID = pppa.PROJECT_ID
  17. and ppdid.PROJECT_ID = ppdia.PROJECT_ID
  18. --and ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM
  19. and ( ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM
  20. or ppdia.DRAFT_INVOICE_NUM = ppdid.ORIG_DRAFT_INVOICE_NUM
  21. )
  22. and pppa.SEGMENT1 = '123456' --fictive number
  23. and ppdia.GL_PERIOD_NAME = '05-2020'
  24. order by ppdid.DRAFT_INVOICE_NUM;

问题是在2020年4月创建的发票在2020年5月贷记。所有此类情况下的交易(不同月份的原始发票和信用发票,未重新发行)都不会通过查询获取,即使我取出 pppdia.GL_PERIOD_NAME 条件。
我试着把 (+) 在连接的不同一侧,但结果相同。
有什么办法解决这个问题吗?
谢谢,亚历克斯

yhqotfr8

yhqotfr81#

这是因为null不等于任何东西,包括另一个null。这将导致你的 predicate

  1. and
  2. --ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM
  3. (
  4. ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM or ppdia.DRAFT_INVOICE_NUM = ppdid.ORIG_DRAFT_INVOICE_NUM
  5. )

总是返回false,因此查询返回0行。将or添加到or列表中

  1. and
  2. --ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM
  3. ( ppdid.DRAFT_INVOICE_NUM = ppdia.DRAFT_INVOICE_NUM
  4. or ppdia.DRAFT_INVOICE_NUM = ppdid.ORIG_DRAFT_INVOICE_NUM
  5. or ppdid.DRAFT_INVOICE_NUM is null
  6. )

相关问题