2

我需要创建一个这样的表..

claim amount      court fee
exceed 300          15
301-500             30
501-1000            55  

等等..

我试过了,我的索赔金额是 nvarchar,而法庭费用是浮动的,我在将 nvarchar 转换为数字时出错。

当我尝试此查询时,select * from table where claim amount <=250它会显示所有行。我对索赔金额应使用什么数据类型以及在检索 <=275 之类的查询时如何具体说明感到困惑...

4

2 回答 2

3

我将创建一个具有开始值和结束值的表,开始值 null 用于打开条目,结束值 null 用于结束值。

就像是

DECLARE @Table TABLE(
    ID INT IDENTITY (1,1),
    StartValue FLOAT,
    EndValue FLOAT,
    FeeValue FLOAT
)

INSERT INTO @Table SELECT null,300,15
INSERT INTO @Table SELECT 301,500,30
INSERT INTO @Table SELECT 501,1000,50
INSERT INTO @Table SELECT 1001,null,100

DECLARE @LookupValue FLOAT = 275

SELECT  *
FROm    @Table
WHERE   ISNULL(StartValue, @LookupValue) <= @LookupValue
AND     ISNULL(EndValue, @LookupValue) >= @LookupValue

SQL 小提琴演示

于 2013-10-04T10:03:51.527 回答
1

您应该将其拆分为 2 列,使它们都为 type int

MinClaimAmount 和 MaxClaimAmount(否则您将不得不进行字符串拆分和其他废话)。

MinClaimAmount  MaxClaimAmount     courtFee
0                  300                15
301                500                30
501                1000               55

然后,您的 SQL 将是(如果您想要特定的行)

select * from  table where MinClaimAmount <= 275 AND MaxClaimAmount >= 275

SQL小提琴

于 2013-10-04T10:04:53.013 回答