WHEN または ELSE のいずれかがサブクエリを返すように、IN() ステートメントに CASE-WHEN ステートメントをネストする方法はありますか。私にとって、それは問題ではないはずですが、どういうわけかエラーが発生しています:
「サブクエリが複数の値を返しました。」
IN()
複数の値を処理することになっています!
エラーを再現するための小さな例を次に示します。
-- tblA will be searched for values
Declare @tblA table (i int)
insert @tblA
select 1
union select 2
union select 3
--tblB: its values will be searched in tblA
Declare @tblB table (i int)
insert @tblB
select 2
union select 3
union select 1
--@c used by the CASE statement to match
declare @c varchar(50)
set @c = 'Match'
select *
from @tblA
where i IN ( -- IN statement should accept subquery in it
case @c
when 'Dont Match' then 2 --If it had matched, then the single value 2 would have been returned and TSQL would be happy
else (
select i from @tblB --TSQL not happy and causing error when more than one values returned from the subquery
)
end
)