我有一个非常基本的问题,但我通过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)
答案 0 :(得分:1)
最好像下面这样做:
WHERE PAYMENT BETWEEN (abs(OWED) - 10) AND (abs(OWED) + 10)
正如您所知,BETWEEN
适用于MIN ans MAX
,左侧部分必须是MIN
值。
答案 1 :(得分:0)
BETWEEN运营商是错误的......