Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 如何从范围中选择值_Sql Server 2005 - Fatal编程技术网

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

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

从#测试中选择最大(佣金)
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