检查货币价值是否在一系列其他货币价值之间

时间:2018-01-19 15:01:28

标签: sql sql-server

我有一个非常基本的问题,但我通过SQL和MONEY数据类型搜索的所有内容都是关于强制转换和添加字符的。

我正在看两个值;付款和OWED。两者都是我服务器中的money数据类型。付款是积极的,而OWED是负面的。我希望看看(根据我已经弄清楚的其他标准)PAYMENT是否在欠款的+/- $ 10之内。这将在WHERE子句

当PAYMENT等于OWED时,我可以在where子句

中执行此操作
  WHERE PAYMENT = (OWED*-1)

我想做的只是

 WHERE PAYMENT BETWEEN ((OWED*-1)+10) AND ((OWED*-1)-10)

当我拉数据时,这会返回NULL

感谢所有帮助!

编辑:添加样本数据

  select
  pay.clientID
 ,pay.payment_amount
 ,pay.paydate
 ,ow.owed_amount

  from paymenttable pay
  join owingtable   ow on pay.clientID = ow.clientID


  where 1=1
  AND pay.paydate > '1/1/2017'
  AND pay.payment_amount BETWEEN ((ow.owed_amount*-1)+10) AND 
  ((ow.owed_amount*-1)-10)

2 个答案:

答案 0 :(得分:1)

最好像下面这样做:

WHERE PAYMENT BETWEEN (abs(OWED) - 10) AND (abs(OWED) + 10)

正如您所知,BETWEEN适用于MIN ans MAX,左侧部分必须是MIN值。

答案 1 :(得分:0)

BETWEEN运营商是错误的......