Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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中查找范围之间的值_Sql_Sql Server_Sql Server 2005_Tsql - Fatal编程技术网

如何在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以使其正常工作。

能否展开您的问题,我不明白,您能否提供有关表结构和执行的查询的更多详细信息?第一列可能是包含范围的字段,他想检测给定值所属范围的值?如果没有你的模式,这是无法有效回答的…简短的回答是肯定的,你可以不用光标来回答。如果您愿意,请提供表架构列名和类型,这里有人可以给您答案。