2016-12-28 2 views
2

페이지의 큐 결과를 가져 오는 기본 선택 쿼리가 있습니다. 특정 값 집합을 포함 할 때 레코드가 표시되지 않도록 where 절에 일부 논리를 추가하려고합니다.TSQL Where 절 여러 조건 충족

WHERE (
     (L.requestType <> 'Check') 
     AND (L.requestStatus <> 'New Request') 
     AND (DATEDIFF(hour, CAST(L.requestDate AS DATE), GETDATE()) between 0 and 48) 
    ) 

위의 예에서 세 가지 데이터 요소를 모두 포함하는 레코드는 포함하고 싶지 않습니다.

일부 테스트를 수행하는 경우 해당 레코드가 다른 두 가지 조건을 충족하지 못하는 경우에도 모든 "검사"가 제외됩니다.

where 절을 모든 기준에 맞추기 위해 어떻게 만들 수 있으며 or 인 것으로 보이지 않습니까?

+0

에 해당

WHERE NOT (L.requestType = 'Check' AND L.requestStatus = 'New Request' AND (DATEDIFF(hour, CAST(L.requestDate AS DATE), GETDATE()) between 0 and 48 ) 

해야합니다. –

+0

@GordonLinoff - where 절에있는 세 가지 조건을 모두 충족하는 레코드를 제외하고 모든 데이터가 포함됩니다. 그들은 최근 48 시간 이내에 새로운 요청 상태의 수표가 될 수 없습니다. – SBB

답변

4

당신은 당신이 행을 유지하려면 어떤 기준을 필터링해야한다는 것을 의미 어떤 기준을 내게 분명하지 않다

WHERE (L.requestType <> 'Check' 
     OR L.requestStatus <> 'New Request' 
     OR DATEDIFF(hour, CAST(L.requestDate AS DATE), GETDATE()) not between 0 and 48 
     ) 
+0

그게 그랬어 : x - 빠른 응답 주셔서 감사합니다. 이전에 그렇게 해본 적이 없었습니다. – SBB

+0

@SBB. . . 이것이 올 바르면 대답을 받아 들여야합니다. –