Как я запрошу для столбца суммы, который находится в пределах 1.00 от фактической суммы?
Например, если AmountPaid = 7,75, я хотел бы вернуть все результаты, где Сумма между 6.75 - 8.75.
Я знаю, что я пропускаю что-то простое, но на данный момент у меня есть следующий код...
Where (vc.AmountPaid >= med.Payment - 1.00 or vc.amountpaid <= med.Payment + 1.00)
Where (vc.AmountPaid between med.Payment - 1.00 and med.Payment + 1.00)
Самый простой способ получить то, что вы ищете:
where abs(AmountPaid-payment) <= 1
ABS хорошо, когда я имею дело с численными различиями. разница между 10 и 12 и 12 и 10 одинакова: 2. Обратите внимание на этот пример (который вы можете просто скопировать/вставить в SSMS и запустить):
declare @yourdata table (AmountPaid money, Payment money);
insert @yourdata values (50.00, 49.12),(100, 100.91),(25,1000),(10,20);
select AmountPaid, Payment, diff = abs(AmountPaid-payment)
from @yourdata
where abs(AmountPaid-payment) <= 1;
возвращается
AmountPaid Payment diff
--------------------- --------------------- ---------------------
50.00 49.12 0.88
100.00 100.91 0.91
Вы должны заменить OR ключевым словом на AND.
что-то вроде этого
Where (vc.AmountPaid >= med.Payment - 1.00 AND vc.amountpaid <= med.Payment + 1.00)