2012-12-10 5 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)) 

당신은 또한 경우에 한 Statment에게

+0

오라클이 아닌 SQL Server 관련 질문입니다. –