0

现在我有以下查询:

select INVOICE_ID, INVOICE_NUM, VENDOR_NUM, STATUS, GROUP_ID
from AP_INVOICES_INTERFACE 
and status in(:p_status)
and last_update_date between :p_date_from and :p_date_to
order by last_update_date, group_id

但这仅显示状态是“拒绝”还是“已处理”。我需要它,以便它也显示状态何时为空。我将如何包含 NVL 来显示这一点?

不确定此信息是否相关,但 Status 的值列表中的查询为

SELECT DISTINCT STATUS 
FROM AP_INVOICES_INTERFACE
4

3 回答 3

0

尝试这个:

select INVOICE_ID, 
       INVOICE_NUM, 
       VENDOR_NUM, 
       STATUS, 
       GROUP_ID
  from AP_INVOICES_INTERFACE 
 where (status in (:p_status) OR status is null)
   and last_update_date between :p_date_from and :p_date_to
 order by last_update_date, 
          group_id

您需要关闭状态验证范围才能正确使用“或”

于 2018-10-15T17:01:42.117 回答
0

看起来 NVL 不是您所需要的。

尝试这样的事情:

select INVOICE_ID, INVOICE_NUM, VENDOR_NUM, STATUS, GROUP_ID
from AP_INVOICES_INTERFACE 
where last_update_date between :p_date_from and :p_date_to 
and (status is null or status in(:p_status))
order by last_update_date, group_id;
于 2018-10-15T17:03:42.567 回答
0

如果除了被“拒绝”或“处理”之外,您nvl还需要捕获它,您可以试试这个:status = null

...
where nvl(status,'processed') in (:p_status)
  and ...

这样,如果statusis nullnvl则将其值转换为 'process' 并返回true该条件。

于 2018-10-16T08:54:12.357 回答