查找最接近值的行

问题描述 投票:0回答:1

我有一个有两个维度的运费表:

Zone
Weight
Zone
是一个精确值。
Weight
是给定值较低(含)的范围。这意味着在给定的示例中,最高范围是 200-∞。

我正在寻找给定

Zone
Weight
的成本。

SELECT TOP 1 *
FROM fg.CostTest
WHERE Zone = 'A' AND Weight <= 123
ORDER BY Weight DESC

表中有几十万行,在性能方面有没有更好的方法来实现这一点?

我正在使用 SQL Server 2022。

sql sql-server tsql
1个回答
0
投票

这可能有帮助:

select * from (
   select *, row_number() over (order by abs(weight - 123)) rn
   where zone = 'A'
) t where rn = 1
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.