如何在sql server中查找范围之间的值
我的情况是 我的查询返回了这个如何在sql server中查找范围之间的值,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我的情况是 我的查询返回了这个 2 10 150000 where 2=startingslab and 10 = endingslab 11 20 250000 21 31 150000 现在我想获得startingslab=3的价格详细信息。i、 我知道我需要一行一行地处理它,因为中间不起作用 除了游标和while循环之外,还有其他方法可以实现这一点吗 编辑 此
2 10 150000 where 2=startingslab and 10 = endingslab
11 20 250000
21 31 150000
现在我想获得startingslab=3的价格详细信息。i、 我知道我需要一行一行地处理它,因为中间不起作用
除了游标和while循环之外,还有其他方法可以实现这一点吗
编辑
此查询返回上述结果集
SELECT dbo.TBM_Slab_Details.SlabStartValue,
dbo.TBM_Slab_Details.SlabEndValue,
convert(int,(@MRP-(dbo.TBM_Slab_Details.Discount*@MRP)/100)) as SlabPrice
FROM dbo.TBM_SLAB
INNER JOIN dbo.TBM_Slab_Details ON dbo.TBM_SLAB.SlabId = dbo.TBM_Slab_Details.SlabId and productid=@productID
现在我有一个变量@slabvalue,它保存slabvalue
现在对于eg@slabvalue=3,我想从上面的结果集中得到150000
SELECT dbo.TBM_Slab_Details.SlabStartValue,
dbo.TBM_Slab_Details.SlabEndValue,
convert(int,(@MRP-(dbo.TBM_Slab_Details.Discount*@MRP)/100)) as SlabPrice
FROM dbo.TBM_SLAB
INNER JOIN dbo.TBM_Slab_Details ON dbo.TBM_SLAB.SlabId = dbo.TBM_Slab_Details.SlabId and productid=@productID
如果是12,我想要250000张快速盲拍:
declare @lab int
select top 1 *
from yourTable
where startingslab >= @lab
order by startingslab asc
如果您的SLABStartvalue和SlabBend值是整数或其他数字数据类型,那么这是否可行
declare @Myvariable int
Set @Myvariable = 3
select @Myvariable, slabprice from
(SELECT dbo.TBM_Slab_Details.SlabStartValue,
dbo.TBM_Slab_Details.SlabEndValue,
convert(int,(@MRP-(dbo.TBM_Slab_Details.Discount*@MRP)/100)) as SlabPrice
FROM dbo.TBM_SLAB
INNER JOIN dbo.TBM_Slab_Details
ON dbo.TBM_SLAB.SlabId = dbo.TBM_Slab_Details.SlabId and productid=@productID) a
where SlabStartValue <= @Myvariable and SlabEndValue>=@Myvariable
如果它们是字符类型的数据,您可能需要将它们转换为where子句中的INT以使其正常工作。能否展开您的问题,我不明白,您能否提供有关表结构和执行的查询的更多详细信息?第一列可能是包含范围的字段,他想检测给定值所属范围的值?如果没有你的模式,这是无法有效回答的…简短的回答是肯定的,你可以不用光标来回答。如果您愿意,请提供表架构列名和类型,这里有人可以给您答案。