1

一緒に働く

  • SQL Server 2005
  • 手順
  • パラメーター

私は通常のクエリを持っています:

select column1, column2
from table1
where column3 in ( select columnb from table2 )

そして今、私は例えばintのフィルターを持っています

declare @filtertype int /*@filtertype=1 then column3,@filtertype=2 then column2*/ 
set @filtertype int

私はこれとして何かを必要としました

select column1, column2
from table1
where
   case when @filtertype=1 then (column3 in (select columnb from table2))
   else (column2 in (select columnb from table2))

あなたがそれを見るならば、あなたはユニークな変化がcolumn2のcolumn3であるのを見ることができます

私はこのような大きなクエリを複製したくありません:

if(@filtertype=1)
begin
   first query
end
else
   other query
begin
end
4

2 に答える 2

3

これを試して:

   select column1, column2 
    from table1 
    where 
    (@filtertype=1 AND (column3 in (select columnb from table2)))
    OR
    (@filtertype=2 AND (column2 in (select columnb from table2)))
于 2012-09-07T15:10:15.123 に答える
1
select 
...
from ...
where (@filtertype=1 and column3 in (select ... from table2))
or (@filtertype<>1 and column2 in (select ... from table2))
于 2012-09-07T15:13:08.090 に答える