在Sql server IN条件中查找上一个/下一个值

时间:2015-06-04 19:02:39

标签: sql-server

假设我有一个IN状态(11,22,32,34,44,55),我知道我的参数现在是32.是否有可能找到我参数的当前位置并获得前一个(这里) 22)或下一个(34)值?如果是这样,最好的方法是什么?

我用note_num得到了几个音符。使用max和min很容易获得第一个音符和最后一个音符。但我希望得到下一个或上一个音符。最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

没有IN条款,没有。如果您有SQL Server 2012或更高版本,则可以使用LAGLEAD窗口函数根据您的上一个或下一个匹配值的记录来检索表达式条件。

您还可以使用您的值创建一个表(固定或临时)并加入到该表而不是使用IN子句。因此,您的表FilterValues可能如下所示:

Position             Value
-------------------- -----------
1                    11
2                    22
3                    32
4                    34
5                    44
6                    55

然后加入此表:

select Mytable.*, Position
from Mytable
join FilterValues
on Mytable.Value = FilterValues.Value

现在你在列表中占有一席之地。

答案 1 :(得分:2)

不,不可能。 IN就像一个OR条款。

只要知道它之前和旁边的值,就必须手动完成。