假设我有一个IN状态(11,22,32,34,44,55),我知道我的参数现在是32.是否有可能找到我参数的当前位置并获得前一个(这里) 22)或下一个(34)值?如果是这样,最好的方法是什么?
我用note_num得到了几个音符。使用max和min很容易获得第一个音符和最后一个音符。但我希望得到下一个或上一个音符。最好的方法是什么?
答案 0 :(得分:3)
没有IN
条款,没有。如果您有SQL Server 2012或更高版本,则可以使用LAG
和LEAD
窗口函数根据您的上一个或下一个匹配值的记录来检索表达式条件。
您还可以使用您的值创建一个表(固定或临时)并加入到该表而不是使用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
条款。
只要知道它之前和旁边的值,就必须手动完成。