gpt4 book ai didi

sql-server - 将单个数字匹配到 SQL Server 中最接近的范围

转载 作者:行者123 更新时间:2023-12-01 11:45:21 27 4
gpt4 key购买 nike

我有一张表格显示基于数字的评分数字,如下所示:

  • 0-24 = 新手
  • 25-49 = 实习生
  • 50-74 = 中等
  • 75-99 = 专业
  • 100 = 超人

我需要取一个数值,并将其与上面最接近的同等成绩相匹配。因此,80 等同于 Pro,因为它符合 Pro 基本水平,但低于 Superman 基本水平> 水平。

我已经编写了一些代码来对此进行测试,但是 TOP 1 过滤器似乎在 JOIN 之前应用,这意味着我总是看到最低等级而不是实际等级。谁能帮我推荐一个更好的选择?

SQL Fiddle here

代码在这里:

DECLARE @tbl_levels TABLE ([schemeID] int, [calevel] numeric(5,2), [desc] nvarchar(200))
DECLARE @level numeric(5,2) = 70
DECLARE @schemeID int = 1

insert into @tbl_levels ([schemeID],[calevel],[desc]) VALUES (1, 0, 'Newbie')
insert into @tbl_levels ([schemeID],[calevel],[desc]) VALUES (1, 25, 'Trainee')
insert into @tbl_levels ([schemeID],[calevel],[desc]) VALUES (1, 50, 'Moderate')
insert into @tbl_levels ([schemeID],[calevel],[desc]) VALUES (1, 75, 'Pro')
insert into @tbl_levels ([schemeID],[calevel],[desc]) VALUES (1, 100, 'Superman')

SELECT
*
FROM
(SELECT
@level as [level],
@schemeID as [schemeID]) ca LEFT OUTER JOIN
(SELECT
TOP 1 *
FROM
@tbl_levels
ORDER BY
calevel ASC
) lvl ON lvl.schemeID = ca.schemeID AND lvl.calevel <= ca.[level]

最佳答案

SELECT @level as Level,s.*
from @tbl_levels s
where [calevel]=(Select Max([calevel]) from @tbl_levels where [calevel]<=@level)

作为对你评论的回答

SELECT
t.[level],
(Select [desc] from @tbl_levels where [calevel]=(Select Max([calevel]) from @tbl_levels where [calevel]<=t.[level])) as [Desc]
FROM
@test t

关于sql-server - 将单个数字匹配到 SQL Server 中最接近的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com