如何选择范围中的值

时间:2011-04-28 19:16:25

标签: sql-server-2005

我在表格中有两列。

Percentage, Commission
100           20
98            19.5
97.5          19
96.25         18.5
95            18
...
80            15
  • 如果我的百分比是95.25,那么佣金应该是18。

  • 如果我的百分比是97.5,那么佣金应该是19。

如何在SQL Server中执行此操作?

3 个答案:

答案 0 :(得分:1)

SELECT MAX(Commission) FROM #test
WHERE Percentage <= 96.25

答案 1 :(得分:1)

select top 1 Commission
from theTable
where Percentage <= 96.25
order by Percentage desc

答案 2 :(得分:0)

只是为了提供另一种选择:

WITH ranked AS (
  SELECT
    *,
    rank = CASE
      WHEN Percentage > @MaxPercentage THEN 0
      ELSE ROW_NUMBER() OVER (ORDER BY Percentage DESC)
    END
  FROM atable
)
SELECT Commission
FROM ranked
WHERE rank = 1

正如我在您对您的问题的评论中所说,并不完全清楚哪一行应该实际提供正确的输出,最大Percntage或最大Commission的那一行。在此基础上,您可能希望将ORDER BY Percentage DESC替换为ORDER BY Commission DESC