Sql server 2005 如何从范围中选择值
我在一个表中有两列Sql server 2005 如何从范围中选择值,sql-server-2005,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中执行此操作?从#测试中选择最大(佣金) SELECT MAX(Commission)
Percentage, Commission
100 20
98 19.5
97.5 19
96.25 18.5
95 18
...
80 15
- 如果我的百分比是95.25,那么佣金应该是18
- 如果我的百分比是97.5,那么佣金应该是19
从#测试中选择最大(佣金)
SELECT MAX(Commission) FROM #test
WHERE Percentage <= 96.25
其中百分比<代码>选择前1名佣金
从表格
其中百分比只是为了提供另一个选项:
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
正如我在对你的问题的评论中所说的那样,目前还不完全清楚哪一行应该真正提供正确的输出,是具有最大百分比的输出
还是具有最大佣金的输出
。基于此,您可能希望用ORDER BY Commission DESC
替换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