2016-12-28 156 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

現在還不清楚,我認爲你要保持行和什麼樣的標準應該被過濾的標準是什麼暗示。 –

+0

@GordonLinoff - 除了符合where子句中所有三條標準的記錄之外,所有數據都將被包含。他們不能成爲最近48小時內具有新請求狀態的支票。 – SBB

回答

4

你需要

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

這相當於

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。 。 。如果這是正確的,那麼你應該接受答案。 –