Sql server 2012 SQL Server内部联接需要中的大于和小于

Sql server 2012 SQL Server内部联接需要中的大于和小于,sql-server-2012,inner-join,Sql Server 2012,Inner Join,我目前正在开发一个允许你贷款的系统。问题是,为了贷款,你必须通过规定的手续,或者必须在你的银行账户上有更多的存款 这是存款的模式 tbl\u fxd\u dep: fxid | amount 1 10,000 2 15,000.01 3 20,000.01 empid | amount 1 15,100.01 以下是员工存款金额的模式 待定员工: fxid | amount 1

我目前正在开发一个允许你贷款的系统。问题是,为了贷款,你必须通过规定的手续,或者必须在你的银行账户上有更多的存款

这是存款的模式

tbl\u fxd\u dep

    fxid | amount
    1      10,000
    2      15,000.01
    3      20,000.01
    empid | amount
    1       15,100.01
以下是员工存款金额的模式

待定员工

    fxid | amount
    1      10,000
    2      15,000.01
    3      20,000.01
    empid | amount
    1       15,100.01
如您所见,员工存款金额既不等于
15000.01
也不等于
20000.01
,而是介于这两个金额之间

这是我的sql语句

Select 
    empid, fname, mname, lname, st, prv, city, cnt, fxid 
from 
    emp as e
inner join 
    fd as f on e.amount >= f.amount
            and e.amount <= f.amount
where 
    uname = @user and pwd = @pwd
选择
empid、fname、mname、lname、st、prv、城市、cnt、fxid
从…起
emp as e
内连接
在e.amount>=f.amount上作为f的fd

而e.amount在连接条件中有一个相当严重的逻辑缺陷-即,由于在任何给定时间只考虑一行,因此根据定义,唯一可以小于或等于x且大于或等于x的值等于x。这就是marc_s在评论中试图指出的:你所使用的标准并不是你所认为的那样。由于数据集很小,您可以很快地完成此操作:只需将文本值
15000.01
替换为
e.amount
,然后查看数据

您似乎希望获得给定员工符合的最高
fxid
(旁注:为什么是员工而不是客户?)。您可以使用如下查询来完成此操作:

SELECT
    empid
   ,fxid = MAX(fxid)
FROM
    emp AS e
    INNER JOIN fd AS f
        ON e.amount <= f.amount
WHERE
    uname = @user AND
    pwd = @pwd
GROUP BY 
    empid
选择
舞虻
,fxid=MAX(fxid)
从…起
emp AS e
内连接fd为f

在e.金额上,如果
e.金额
必须大于或等于
f.金额
,同时也小于或等于-----这基本上意味着您只选择那些具有相同数量的行……它转到<代码> fxid 1 到<代码> fxid 3 < /> >通过<代码> fxID-2 只显示了<>代码> 1 和<代码> 3 < /代码>,它不考虑“代码> fxid 2 < /代码>作为另一个Id in。以某种方式。假设初始存款为15100.00,
fxid
应该开始的范围是
15000.01
,结束于
20000
,但它完全忽略了“15000.01”标记。有办法解决这个问题吗?谢谢