SQL不是我的强项,我不知道如何提出这个问题,一些帮助将不胜感激。
我需要提取一系列数字之间的记录。所以我有一个数字,例如230,根据下表,它将返回60的速率。
MinR MaxR Rate
1 3000 60.00
3001 5000 50.00
5001 7000 48.00
7001 10000 45.00
10000 999999 43.00
逻辑上我已经尝试过 MinR> = 237和MaxR< = 237 ,但无济于事。
是否有一个简单的声明来实现这一点,或者我应该以编程方式处理它(光标,If..then等)
非常感谢 格雷厄姆
答案 0 :(得分:1)
你几乎就在那里,你的逻辑倒退了。让我们看一下MinR >=237 and MaxR <=237
并插入第一行的数字:
1 >= 237 AND 3000 <= 237
这种情况满足吗?显然不是:1不大于或等于237.如果你以相反的方式做到这一点:
MinR <= 237 AND MaxR >= 237
或者,为了提高可读性(以及将来避免这种错误):
237 BETWEEN MinR And MaxR
答案 1 :(得分:1)
您可以按如下方式使用BETWEEN
:
SELECT Rate
FROM YourTable
WHERE 230 BETWEEN MinR AND MaxR - 1
使用-1部分,这样就不会为一个输入获得两条记录。