#sql-server #tsql
#sql-сервер #tsql
Вопрос:
как я могу получить ближайший филиал компании в соответствии с приведенной ниже таблицей
BranchId BusinessId Distance
-- --- ---
24 267 221.71464641964
13 258 253.099943313603
14 258 253.099943313603
15 258 17.3790669756556
17 260 3456.74117699001
32 260 9.852770682035
121 260 374.907804283969
122 260 374.907804283969
127 260 213.074377898838
63 292 18.6199088005564
64 292 9.35737878020064
65 292 3456.74117699001
таким образом, результат будет таким
BranchId BusinessId Distance
-- --- ---
24 267 221.71464641964
15 258 17.3790669756556
32 260 9.852770682035
64 292 9.35737878020064
Ответ №1:
Вы можете использовать оконные функции:
select distinct
first_value(BranchId) over (partition by BusinessId order by Distance) BranchId,
BusinessId,
min(Distance) over (partition by BusinessId) Distance
from tablename
Смотрите демонстрацию.
Результаты:
> BranchId | BusinessId | Distance
> -------: | ---------: | ---------------:
> 15 | 258 | 17.3790669756556
> 24 | 267 | 221.71464641964
> 32 | 260 | 9.852770682035
> 64 | 292 | 9.35737878020064