2016-12-02 129 views
2

我有以下SQLSQL IN子句值

Select * 
from PS_VENDOR 
WHERE VENDOR IN ('111','222','333','444') 

其中444供應商不存在。但是當我運行SQL我應該從條款獲得所有4行與所有供應商和444只填充空白或「X」

我試過以下,它不工作

Select * 
from PS_VENDOR 
WHERE NVL(VENDOR IN ('111','222','333','444'), 'X'); 
+5

你不能選擇不存在的值。你必須以某種方式「創造」它。 – jarlh

+2

只是爲了提醒你。當你提出問題並收到答案時,如果答案正確,你應該接受其中的一個答案。你也可以upvote有用的答案。你已經提出了7個問題,並沒有接受任何答案。這樣的政策會阻止他人回答您的進一步問題。乾杯。 – Kacper

+0

感謝您的反饋意見。對這個小組來說很陌生,所以很抱歉。能否請讓我知道如何接受答案 –

回答

6

使用一個CTE來保存你的值,左加入

with V1 as 
(
select '111' as VV from dual 
union all 
select '222' as VV from dual 
union all 
select '333' as VV from dual 
union all 
select '444' as VV from dual 
) 

select VV, PS_VENDOR.* 

from V1 
left join PS_VENDOR 
    on VENDOR = VV 
+0

@DuduMarkovitz好喊,更新答案 – JohnHC