2012-12-10 9 views
4

Я пытаюсь создать запрос, который будет добавлять только предложения AND, где выполняются определенные условия.SQL-IF-оператор вокруг AND

Это то, что я после:

SELECT DISTINCT 
    id 
    name 
    active 
FROM team 
WHERE id = 1234 
IF team.active = 'y' 
    AND team.id IN 
    { 
     query 
    } 
ELSEIF team.active = 'n' 
    AND team.id IN 
    { 
     query 
    } 

Но я не знаю, как это сделать в SQL. Какие-либо предложения?

ответ

5
SELECT DISTINCT 
    id 
    name 
    active 
    FROM team 
WHERE id = 1234 
    AND (team.active = 'y' 
    AND team.id IN 
     { 
      query 
     }) 
    OR 
    (team.active = 'n' 
    AND team.id IN 
     { 
     query 
     }) 

Вы используете соединители AND и OR для создания логики.

+0

Спасибо, это сработало. Отмечено это как ответ, когда вы избили другого парня на минуту. – Alias

3

Вы можете использовать булеву логику как так

SELECT ... 
FROM team 
WHERE id = 1234 
    AND (
     (team.active = 'y' AND team.id IN query) 
     OR 
     (team.active = 'n' AND team.id IN query) 
    ) 

Я пропустил разницу в двух ветвях?

+0

Я думаю, что 'query' предназначен для разных ветвей. Вот в чем разница. –

-1

Вы можете использовать расшифровывает заявление для достижения результата

SELECT DISTINCT 
    id 
    name 
    active 
FROM team 
WHERE id = 1234 and 
team.id in (
decode (team.active,'y',(query),'n',(query)) 

вы можете также использовать случай, Постулаты

+0

Это вопрос SQL Server, а не Oracle –

Смежные вопросы