демо на дб <> скрипка
- Вы
Case When ... Then End
неверный синтаксис - Вы должны использовать Желаемые значения таблицы как ниже
select v1.value,
case when dummyId is not null then 'Available' else 'Not Available' end as dummyStatus
from (
values('222'),('333'),('43242'),('3242')
)v1(value)
left join (
values('222'),('333') -- Let's say your table here
)dummy(dummyId) on v1.value = dummy.dummyId
Обновлено (Param is '(222,333,43242,3242)')
Демонстрация на db <> fiddle
Допустим, у нас есть функция strSplit
, которая поможет нам разбить строку на таблицу, тогда вы можете достичь таким образом
declare @str varchar(200) = '(222,333,43242,3242)'
set @str = REPLACE(REPLACE(@str,'(', ''), ')', '')
select v1.val,
case when dummyId is not null then 'Available' else 'Not Available' end as dummyStatus
from strSplit(@str, ',')v1
left join (
values('222'),('333') -- Let's say your table here
)dummy(dummyId) on v1.val = dummy.dummyId
Примечание : SQL Server 2016 и более поздние версии имеют STRING_SPLIT Тогда Вы просто делаете это, демо на дБ <> fiddle
declare @str varchar(200) = '(222,333,43242,3242)'
set @str = REPLACE(REPLACE(@str,'(', ''), ')', '')
select v1.value,
case when dummyId is not null then 'Available' else 'Not Available' end as dummyStatus
from STRING_SPLIT(@str, ',')v1
left join (
values('222'),('333') -- Let's say your table here
)dummy(dummyId) on v1.value = dummy.dummyId
Выход