TSQL满足多个条件的条款

时间:2016-12-28 15:20:00

标签: sql sql-server tsql 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)
      )

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

在进行某些测试时,它会排除所有&#34;支票&#34;例如,即使这些记录也不符合其他两个标准。

如何让我的where条款符合所有条件,而不是看似or的内容?

1 个答案:

答案 0 :(得分: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
       )
相关问题