[英]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.