C# 如何在where子句中使用多行?
我正在使用Firebird数据库。 最终的目标是根据给定的大小进行旅行。 我面临的问题是给定的大小是连续的 例如,给定的大小为0.47。 然后,通过插值公式得到行程:0.47-0.45*5.0-2.5/0.5-0.45+2.5=3.5 实际上,在提取了给定大小的2行之后,我尝试用C进行计算。但我不得不抽出两行 我该如何解决这个问题。为此,我建议使用铅:C# 如何在where子句中使用多行?,c#,sql,where-clause,firebird,C#,Sql,Where Clause,Firebird,我正在使用Firebird数据库。 最终的目标是根据给定的大小进行旅行。 我面临的问题是给定的大小是连续的 例如,给定的大小为0.47。 然后,通过插值公式得到行程:0.47-0.45*5.0-2.5/0.5-0.45+2.5=3.5 实际上,在提取了给定大小的2行之后,我尝试用C进行计算。但我不得不抽出两行 我该如何解决这个问题。为此,我建议使用铅: TRAVEL | SIZE 0 | 0.41 2.5 | 0.45 5.0 | 0.50
TRAVEL | SIZE
0 | 0.41
2.5 | 0.45
5.0 | 0.50
7.5 | 0.54
10 | 0.58
在Firebird的旧版本中,您可以使用相关子查询来获取下一个值。我建议使用两个查询,而不是在一个查询中尝试这样做-一个查询将选择where size>value,另一个选择where size
select (case when 0.47 = size then travel
else travel + (next_travel - travel) * (0.47 - size) / (next_size - size)
end) as imputed_size
from (select t.*,
lead(size) over (order by size) as next_size,
lead(travel) over (order by size) as next_travel
from t
) t
where 0.47 >= size and
(0.47 < next_size or next_size is null);