590
社区成员
发帖
与我相关
我的任务
分享
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T(id INT ,[quality] int,[grade] nvarchar(21))
Insert #T
select 4,5,N'A'union all
select 5,10,N'B' union all
select 6,101,N'D'
Go
--测试数据结束
DECLARE @a INT = 7
SELECT DISTINCT
grade
FROM ( SELECT CASE WHEN @a <= a.quality
AND a.id = ( SELECT MIN(id)
FROM #T
) THEN a.grade
WHEN @a >= a.quality
AND @a <= b.quality THEN b.grade
WHEN b.quality IS NULL
AND @a >= a.quality THEN a.grade
ELSE NULL
END AS grade
FROM #T a
LEFT JOIN #T b ON a.id + 1 = b.id
) t
WHERE grade IS NOT NULL;
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T(id INT ,[quality] int,[grade] nvarchar(21))
Insert #T
select 4,5,N'A'union all
select 5,10,N'B' union all
select 6,101,N'D'
Go
--测试数据结束
DECLARE @a INT = 88
SELECT DISTINCT
grade
FROM ( SELECT CASE WHEN @a <= a.quality THEN a.grade
WHEN @a >= a.quality
AND @a <= b.quality THEN b.grade
WHEN b.quality IS NULL
AND @a >= a.quality THEN a.grade
ELSE NULL
END AS grade
FROM #T a
LEFT JOIN #T b ON a.id + 1 = b.id
) t
WHERE grade IS NOT NULL;