现在我有以下查询:
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
但这仅显示状态为“已拒绝”还是“已处理”。我需要它,以便它也可以显示状态为null的时间。我将如何包含NVL来显示此内容?
不确定此信息是否相关,但是“状态”的值列表中的查询为
SELECT DISTINCT STATUS
FROM AP_INVOICES_INTERFACE
答案 0 :(得分: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
您需要关闭状态验证的范围才能正确使用“ OR”
答案 1 :(得分: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;
答案 2 :(得分:0)
如果您还需要nvl
来捕捉status = null
何时被“拒绝”或“处理”,您可以尝试以下方法:
...
where nvl(status,'processed') in (:p_status)
and ...
这样,如果status
为null
,则nvl
会将其值转换为'process',并为该条件返回true
。