SQL / SSRS 2008 - 如何将2个条件组合成WHERE子句中的单个条件?

时间:2016-11-22 14:03:50

标签: sql sql-server

我有一个看似简单的要求,但我不能让它发挥作用。我想在结果集中排除满足两个条件的特定记录,单击下面的图像以查看我当前的结果集:https://i.stack.imgur.com/z93m3.png。我想排除任何同时具有售价84.99英镑和vat_value为40.83英镑的行,在我的情况下,这意味着我希望排除结果集图像的最后一行。

我试图将以下内容用作我的SQL代码:

SELECT     created_by, sales_order_number, sales_order_credit_line, qty_credited, sales_order_line, selling_price, vat_value

FROM         sales_order_credit

WHERE    (selling_price <> 84.99 AND vat_value <> 40.83)

但是,只要我再运行查询,查询设计器就会将我的代码重新格式化为:

SELECT     created_by, sales_order_number, sales_order_credit_line, qty_credited, sales_order_line, selling_price, vat_value

FROM         sales_order_credit

WHERE     (selling_price <> 84.99) AND (vat_value <> 40.83)

因为我的代码现在是这样的,所以它排除了售价为84.99英镑的所有行以及所有具有£40.83的vat_value的行,这不是我想要的 - 我只想排除坚持两者的行这些条件。

我以前遇到过这种情况,但从来不知道应该怎么做 - 真的很感激任何帮助。

雅各

编辑 - 对评论的回应

VKP - 感谢您的建议,当我添加您的代码时,它会更改为:

SELECT     created_by, sales_order_number, sales_order_credit_line, qty_credited, sales_order_line, selling_price, vat_value
FROM         sales_order_credit
WHERE     (NOT (selling_price = 84.99)) 
          OR
          (NOT (vat_value = 40.83))

同样,它需要两个并将它们置于由OR分离的完全独立的条件下 - 这不是我正在寻找的

普遍存在的开发人员 - 有区别,如果您执行重新格式化的代码版本,它将排除第4行和第2行,而我只希望排除第4行,因为它满足两个条件,而行2只满足1个条件(selling_price)

2 个答案:

答案 0 :(得分:0)

WHERE(selling_price&lt;&gt; 84.99)或(vat_value&lt;&gt; 40.83)

亲自尝试:rextester

答案 1 :(得分:0)

我认为在你的情况下做的正确的事情是下一个:

SELECT     created_by, sales_order_number, sales_order_credit_line,  qty_credited, sales_order_line, selling_price, vat_value
FROM         sales_order_credit
WHERE     NOT (selling_price = 84.99 AND vat_value = 40.83)