2011-04-28 74 views
0

我在表中有两列。如何选择范围内的值

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中?

+0

什么是实际的规则?在百分比<= @GivenPercentage?行中选择最大佣金值?或者从百分比最大百分比<= @GivenPercentage的行中选择Commision? – 2011-04-29 04:25:16

回答

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

这是比我的更好的解决方案。希望我会想到:) – Nik 2011-04-28 19:27:26

+0

感谢您的答复。 – user702268 2011-04-28 20:08:58

1
select top 1 Commission 
from theTable 
where Percentage <= 96.25 
order by Percentage desc 
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 Commission DESC替换ORDER BY Percentage DESC