簡體   English   中英

SQL - 使用案例邏輯的條款

[英]SQL - Where Clause to Use Case Logic

我需要在查詢中使用case類型的邏輯。 使用的數據庫:Oracle 11g

目前的查詢如下:

SELECT name 
FROM merchant m 
WHERE NOT EXISTS ( 
   SELECT 1 
   FROM settlement s 
   WHERE s.sid = m.mid 
   AND s.rpt_id IN ('111','112','202')
)

還有另一列SRID優先於SID,也可以映射到MID。 現在,我們需要像IF SRID為null然后使用SID,否則使用SRID在WHERE子句中映射到MID。

我想你想要coalesce函數 ,它返回第一個非null值。 不幸的是,我無法訪問Oracle系統進行確認。

select NAME 
from merchant m 
where NOT EXISTS (
    SELECT 1 from SETTLEMENT s 
    where coalesce(s.SRID,s.SID) = m.MID and 
    s.RPT_ID IN ('111','112','202')
    )

是coalesce和nvl之間的比較。 (我不熟悉nvl)

請用

NVL(s.SRID, s.SID) = m.MID

代替

s.SID = m.MID

在哪里條件。

嘗試使用NVL功能。

SELECT NAME 
FROM   merchant m 
WHERE  NOT EXISTS(
     SELECT 1 
     FROM settlement s 
     WHERE NVL(s.srid, s.sid) = m.mid 
     AND s.rpt_id IN ('111','112','202'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM