2016-12-02 133 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