SQL Over/Under 列比较

SQL Over/Under Column Comparison

我正在尝试提取 Net_Qty 是 Order_Qty 的 +/- 300 的行,但我想我可能只是遗漏了一些语法。

SELECT DISTINCT
    o.Ord_No,
    odf.OrdFuel_Order_Qty,
    odf.OrdFuel_Deliv_Net_Qty
FROM Order_Details_Fuel odf
JOIN Orders o ON odf.OrdFuel_Ord_Key = o.Ord_Key
WHERE odf.OrdFuel_Deliv_Net_Qty >= (300 + odf.OrdFuel_Order_Qty)
OR odf.OrdFuel_Deliv_Net_Qty <= (300 - odf.OrdFuel_Order_Qty)

如果我不使用 OR 子句,查询将按预期 return 行,但是当我添加 OR 子句时,查询只是 return 连接 [=20] 中的所有行=].任何帮助将不胜感激。

您的查询有一些问题:

  1. 你有less/greater比倒着
  2. 你有倒数的减法
  3. 你需要 and,而不是 or

您可能正在寻找的是:

SELECT DISTINCT
    o.Ord_No,
    odf.OrdFuel_Order_Qty,
    odf.OrdFuel_Deliv_Net_Qty
FROM Order_Details_Fuel odf
JOIN Orders o ON odf.OrdFuel_Ord_Key = o.Ord_Key
WHERE odf.OrdFuel_Deliv_Net_Qty <= (300 + odf.OrdFuel_Order_Qty)
and odf.OrdFuel_Deliv_Net_Qty >= (odf.OrdFuel_Order_Qty - 300)

正如 JNevill 所指出的,这甚至可以简化为:

ABS(odf.OrdFuel_Deliv_Net_Qty - odf.OrdFuel_Order_Qty) <= 300

这一点完全归功于他。