Выберите строку, в которой столбец имеет наиболее приблизительное значение - PullRequest
0 голосов
/ 05 июня 2019

Мне нужно знать процент комиссионного вознаграждения, которое продавец имеет право, исходя из прибыли, полученной от продажи продукта.

Для этого у меня есть следующая таблица:

Margin    Commission
--------------------
15         9
30        10
60        11
70        12
80        13
90        15

Давайте предположим, что маржа прибыли составила 29. Итак, мне нужен запрос, который возвращает вторую строку (с маржей 30, наиболее приблизительной).

Как мне написать SQL-запрос, который возвращает эту строку?

Спасибо

Ответы [ 3 ]

0 голосов
/ 05 июня 2019

Вы можете использовать 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;
0 голосов
/ 05 июня 2019

Вы можете использовать подзапрос для этой проблемы.Наиболее приблизительный >> используйте Min (ABS ()), чтобы получить его.

select * 
from table 
where (select Min(ABS(table.Margin - "your profit") from table ))
0 голосов
/ 05 июня 2019

Это должен быть простой запрос с использованием 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...