2016-03-03 2 views
1
select * 
from someTable 
where currencyid = @currencyid --CaseA 
    or (Currencyid in (8,11) or (@Currencyid = 0)) --CaseB 

Как изменить такой запрос, так что, когда @currencyid = 0 условие будет установлен на ТОЛЬКО CaseB в то время как другие, как установить случае а?SQL в котором положение условно

Например: если @currencyid = 0 то конечный запрос будет выполняться вне

select * 
from someTable 
where currencyid = (Currencyid in (8,11) or (@Currencyid = 0)) 

, если @currencyid = 8 то конечный запрос будет выполняться вне

select * 
from someTable 
where currencyid = @currencyid 
+1

А? Вам нужно условие, которое говорит '@Currencyid = 0', но только в тех случаях, когда вы знаете, что' @ CurrencyId' не может быть нулем? Как это имеет смысл? –

+0

@Damien_The_Unbeliever: Извините за причинение путаницы. Я обновил вопрос, спасибо –

ответ

2
SELECT * 
FROM someTable 
WHERE (currencyid = @Currencyid AND @Currencyid != 0) 
    OR (Currencyid IN (8, 11) AND @Currencyid = 0) 
--OPTION(RECOMPILE) 
Смежные вопросы