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

ただし、これはステータスが「拒否」または「処理済み」の場合にのみ表示されます。ステータスがnullの場合にも表示されるようにする必要があります。これを示すためにNVLを含めるにはどうすればよいですか?

この情報が関連しているかどうかはわかりませんが、ステータスの値のリストには次のようなクエリがあります

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

「OR」を適切に使用するには、ステータス検証の範囲を閉じる必要があります

于 2018-10-15T17:01:42.117 に答える
0

「拒否」または「処理」以外のnvl場合もキャッチする必要がある場合は、これを試すことができます。status = null

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

そうすれば、statusnullである場合、 はnvlその値を「プロセス」に変換し、trueその条件に戻ります。

于 2018-10-16T08:54:12.357 に答える