我在表中有两列。如何选择范围内的值
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中?
我在表中有两列。如何选择范围内的值
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中?
SELECT MAX(Commission) FROM #test
WHERE Percentage <= 96.25
这是比我的更好的解决方案。希望我会想到:) – Nik 2011-04-28 19:27:26
感谢您的答复。 – user702268 2011-04-28 20:08:58
select top 1 Commission
from theTable
where Percentage <= 96.25
order by Percentage desc
仅仅是为了提供另一种选择的缘故:
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
。
什么是实际的规则?在百分比<= @GivenPercentage?行中选择最大佣金值?或者从百分比最大百分比<= @GivenPercentage的行中选择Commision? – 2011-04-29 04:25:16