SQL Select语句MSSQL

Bub*_*Bub 1 sql sql-server

我有一张桌子如下

Code    Thickness
TPLM        4
TP          4
TP          8
TP          12
TP          19
TPLM        8
TPLM        12
TPLM        19
Run Code Online (Sandbox Code Playgroud)

通过TPLM 8.5来选择结果时我需要的结果.应该对该值进行什么查询?

ProcessCode    Thickness
 TPLM            12
Run Code Online (Sandbox Code Playgroud)

如果表只保持厚度直到19,当我通过TPLM 30时,我需要的结果是TPLM 19.对于该值的查询应该是什么?

 ProcessCode    Thickness
 TPLM            19
Run Code Online (Sandbox Code Playgroud)

Gio*_*sos 5

如果我理解你的要求:

SELECT TOP 1 *
FROM mytable
WHERE Code = 'TPLM' AND Thickness >= 8.5
ORDER BY Thickness
Run Code Online (Sandbox Code Playgroud)

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

@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
Run Code Online (Sandbox Code Playgroud)

在这里演示