我的条件是
我的查询正在返回此
2 10 150000 where 2=startingslab and 10 = endingslab
11 20 250000
21 31 150000
现在我想获得startingslab = 3的价格详情。即15000.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。
现在对于例如@ slabvalue = 3,我想从结果集
获得150000如果是12,我想要250000
答案 0 :(得分:1)
SELECT convert(int,(@MRP-(d.Discount*@MRP)/100)) as SlabPrice
FROM dbo.TBM_SLAB s
INNER JOIN dbo.TBM_Slab_Details d ON s.SlabId = d.SlabId and productid=@productID
WHERE @slabValue >= d.SlabStartValue
and @slabValue <= d.SlabEndValue
答案 1 :(得分:0)
declare @lab int
select top 1 *
from yourTable
where startingslab >= @lab
order by startingslab asc
答案 2 :(得分:0)
如果您的SLABStartvalue和SlabEnd值是整数(或其他数字)数据类型,这可能有用吗?
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以使其工作。