我需要根据产品销售的利润率来了解推销员有权获得的佣金百分比。
为此,我有下表:
Margin Commission
--------------------
15 9
30 10
60 11
70 12
80 13
90 15
让我们假设利润率为29。所以我需要一个返回第二行的查询(利润率最接近30)。
如何编写返回该行的SQL查询?
谢谢
答案 0 :(得分:0)
这应该是使用abs()的简单查询
declare @m table(Margin int, Comission int)
insert @m values (15, 9)
,(30, 10)
,(60, 11)
,(70, 12)
,(80, 13)
,(90, 15)
declare @target int; set @target=29
; with r as (
select *, row_number() over (order by abs(Margin-@target)) closest
from @m
)
select * from r where closest=1
答案 1 :(得分:0)
您可以使用apply
:
select sp.*, c.commission
from salesperson sp outer apply
(select top (1) c.*
from commissions c
where c.margin <= sp.margin
order by c.margin desc
) c;
答案 2 :(得分:0)
您可以使用子查询来解决此问题。最近似>>使用Min(ABS())来获取它。
select *
from table
where (select Min(ABS(table.Margin - "your profit") from table ))