2016-02-04 3 views
0

Как я могу использовать что-то вроде if или case..when объединить следующий код в один?объединить два T-SQL в динамическом режиме

if @para = 'test' 
begin 
select * from Table A where status='A' and id in (select id from Table B) 
end 
else if @para = 'others' 
begin 
select * from Table A where status='A' and id in (select id from Table c) 
end 

как выбрать * из таблицы А где идентификатор, если @para = XXX, то (выберите идентификатор из таблицы B)

Спасибо большое.

+0

вы можете остановиться немного больше, вы ищете для случая, основанного запрос? –

+0

да точно! Я хочу объединить два sql в один. Я могу это сделать? @ArunprasanthKV – chloe06060

+0

На самом деле это подзапрос ... sth, как select * из таблицы, где col1 = xxx и col2 = xxx и id в (................) .. так что если Я использую случай, когда ..error msg будет запрашивать, что подзапросы не могут сделать это – chloe06060

ответ

1

Попробуйте это:

select * 
from Table A 
where (id in (select id from Table B) and @para = 'test') 
     OR 
     (id in (select id from Table c) and @para = 'others') 
+0

большое спасибо ~ он действительно работает – chloe06060

1

Как меченой хранимая процедура я сделал это, как один ... попробовать, как этот

create procedure GetData (@para nvarchar(100)) 
as 
begin 

declare @sql nvarchar(max) 

set @sql = case 
      when @para = 'test' 
     then 
      'Select * from TableA A 
       join TableB B on A.id = B.ID' 
     else -- if @para = 'others' goes into else 
      'Select * from TableA A 
       join TableB B on A.id = B.ID' 
     end 

execute (@sql) 
end 
Смежные вопросы