TSQL Where 子句满足多个条件

SBB*_*SBB 2 sql t-sql sql-server stored-procedures conditional-statements

我有一个基本的选择查询,它将队列的结果拉入我们的页面。我试图在where子句中添加一些逻辑,以防止记录在包含一组特定值时显示。

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

在上面的示例中,我不想包含具有所有三个数据点的记录。

例如,在进行某些测试时,它会排除所有“检查”,即使这些记录不符合其他两项标准。

我怎样才能让我的where条款符合所有标准,而不是做看起来像是or?

Vam*_*ala 5

你需要

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

这相当于

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