我有一个包含以下值的表
id Level Threshold
1 1 5000
2 2 10000
3 3 15000
我需要达到的是,当我通过6000时,我需要获得1级。 12000 Level 2和16000 Level 3?
6000 - Level 1
12000 - Level 2
16000 - Level 3
有人能让我知道如何实现这一目标吗?
答案 0 :(得分:1)
我从你的问题中理解的是,当用户提供6000时,它应该检查哪个值小于6000,因此它是5000,它的等级是1,与12000相同,所以它有两个输出为5000(level1)和10000(level2),但您需要最大值为10000(Level2)。所以根据这种理解,查询是:
select max(LEVEL) from Table where Threshold< 6000;
答案 1 :(得分:0)
这样的SQL问题怎么样?
SELECT One.Level, One.Threshold
FROM
TableName AS One,
(SELECT MAX(Threshold) AS Maximum FROM TableName WHERE Threshold <= :value) AS Two
WHERE One.Threshold = Two.Maximum
将:value
替换为6000
,12000
,16000
或您感兴趣的任何值。内部查询会找到该值已达到的最大阈值。外部查询返回阈值的级别编号。
Disclaimar:我没有测试过这个。
答案 2 :(得分:0)
尝试下面的例子,可能是你想要的一个
create table #temp (id int, value int)
insert into #temp values (1, 6000)
insert into #temp values (2, 12000)
insert into #temp values (3, 15000)
insert into #temp values (4, 16000)
select * from #temp
select id, ceiling(convert(float,value)/6000) as level, value from #temp
答案 3 :(得分:0)
create table temp (id int, level int, Threshold int);
insert into temp values (1,1, 5000);
insert into temp values (2,2, 10000);
insert into temp values (3,3, 15000);
select max(LEVEL) from temp where Threshold<= 8000; (8000 or any other value)