1

我希望这是一个简单的问题,但我不知道如何编写查询以获得正确的结果!

我正在尝试将关于我们的 ERP 解决方案(Dynamics NAV)的报告中的查询翻译成 T-SQL。

我被报告的一个条件卡住了。在 NAV 中,它使用一组过滤器检索所有数据——这很好。检索数据后,它会逐条记录,并“跳过”满足 2 个条件的记录。

跳过记录的条件是:如果“字段 A”<> 4 AND “字段 B”=0,则跳过。

我必须在 T-SQL 中重新创建它最接近的是:

Select *
From t
WHERE [...] AND ( [FieldA] <> 4 AND [FieldB] = 0 ) 

这不起作用!

如何排除 T-SQL 中的记录,只有 where ((A <> 4) AND (B = 0)) ?

4

1 回答 1

2

逻辑等价not(A and B) === not(A) or not(B)在这里是合适的。

在这种情况下,A手段"Field A" <> 4B手段"Field B" = 0。所以not(A)手段"Field A" = 4not(B)手段"Field B" <> 0

因此

SELECT *
FROM t
WHERE [...]
    AND
    (
        [FieldA] = 4 OR
            [FieldB] <> 0
    )
于 2013-06-11T07:35:45.507 回答