SQL Select语句MSSQL

时间:2018-09-04 08:45:21

标签: sql sql-server

我有一张下表

Code    Thickness
TPLM        4
TP          4
TP          8
TP          12
TP          19
TPLM        8
TPLM        12
TPLM        19

在TPLM 8.5中传递以选择结果时需要的结果。该查询应该与该值做什么?

ProcessCode    Thickness
 TPLM            12

如果表格仅保持厚度直到19,则当我通过TPLM 30时,我需要的结果是TPLM19。该值应该与查询做什么?

 ProcessCode    Thickness
 TPLM            19

2 个答案:

答案 0 :(得分:5)

如果我正确理解了您的要求:

SELECT TOP 1 *
FROM mytable
WHERE Code = 'TPLM' AND Thickness >= 8.5
ORDER BY Thickness

该查询选择的第一个TPLM记录等于或超过8.5的厚度值。

Demo by @Andy

您可以使用以下方法处理边缘情况:选择大于最大厚度值的边缘情况:

SELECT TOP 1 *
FROM mytable
WHERE Code = 'TPLM' AND 
      (Thickness >= @myval OR Thickness = (SELECT MAX(Thickness)
                                         FROM mytable
                                         WHERE Code = 'TPLM'))
ORDER BY Thickness

Demo here

答案 1 :(得分:1)

  

据我了解

 select * from #code where Thickness > 8.5 and Thickness <= 12 and code ='TPLM'  

解决方案2:

declare @thickness int
, @code varchar(max)
set @i = 8.5
SELECT TOP 1 *
FROM mytable
WHERE Code = @code AND Thickness > @thickness
ORDER BY Thickness