SQL - 找到正确的值

时间:2015-06-23 10:20:12

标签: sql sql-server between

我遇到了这个问题

在此表中,我已为每笔金额注册了相对折扣

Amount   Discount
 500        5%
1000       10%
1200       11%
2100       15%

... ECC

在另一张表格中我已经获得了2000年订单的总价格,我怎么能找到这个订单的正确折扣?在那种情况下11%,因为2100> 2000年?

3 个答案:

答案 0 :(得分:1)

使用top

select top 1 Discount 
from Discounts
where Amount <= 2000
order by Amount desc

答案 1 :(得分:0)

select discount
  from tq84_discount
 where amount = (
  select max(amount)
   from tq84_discount
  where amount <= 2000
 );

测试数据:

create table tq84_discount (
  amount number,
  discount number
);

insert into tq84_discount values (  0, 0);
insert into tq84_discount values (500, 5);
insert into tq84_discount values (100, 10);
insert into tq84_discount values (1200, 11);
insert into tq84_discount values (2100, 15);

答案 2 :(得分:0)

select top 1 Discount
from Discounts
where Amount < GrossPrice
orderby Amount desc

这个简单的查询有效。 GrossPrice是一个变量,它具有来自其他表的值。在这种情况下2000年。