2011-06-30 8 views
1

可能性の重複:
sql - query between 2 rowsSQLクエリ - 引いて2行

申し訳ありませんが、つらい時、私の前の質問を変更しました。そして、私は 私は間違って私の質問を形成したかもしれないと思う...これで再び新しい。 私は2行を取得する必要がある選択を行っています。 私は13000.00000(範囲)の値を持っています。私は感謝この文は、単に行に2

select * 
from TABLE1 
where 13000 ?? range; 


TABLE1 
Row  range  return_value 
1  0.00000  1.15 
2  10000.00000  1.25 
3  15000.00000  1.35 
4  20000.00000   1.14 

を引っ張る

10000(分の範囲)の間に入る それ以来、行2と3の両方をつかむ必要があり、15000(分の範囲)!

+0

は(範囲<16000または範囲> 9000)TABLE1 SELECT * FROM –

+0

申し訳ありませんが、私はまだ理解していないが。たぶんあなたは、SQLの何か()のビットを見てみたいですか? – mkro

+0

これはどのデータベースですか? –

答えて

1

あなたが以下の

  • リターンの両方のリターン

  • ご入力範囲よりも最大値以下の範囲に該当する行に対応する行を行うために必要があると思わ範囲は入力範囲よりも小さい最小値です。

    SELECT *  
    FROM TABLE1 
    WHERE Range = (select MAX(range) from table1 subt1 where subt1.range < 13000) 
        OR Range = (select MIN(range) from table1 subt1 where subt1.range > 13000) 
    
1

ここでは、2つのクエリである:

SELECT TOP 1 * from TABLE1 where range < 13000 ORDER BY range desc; 
SELECT TOP 1 * from TABLE1 where range > 13000 ORDER BY range asc; 
1
select * from table1 where range in 
(
select max(range) from (select range from table1 where range<13000) 
union 
select min(range) from (select range from table1 where range>13000) 
) 
0

あなたは(13000に閉じている二列IE)別の値に最も近い2つの値を見つけようとしています?または、10000から15000の範囲の間に2行を見つけようとしていますか? 15000値のラベルが「最大範囲」であるはずです。もしそうなら、私は13000への参照ではっきりしていない。

これは後者の場合、これは動作します。

select top 2 * from TABLE1 where range between 10000 and 15000 

これは2つの行を返しますが、2つの行のどちらが範囲内にあるかを区別しません。より具体的にする必要がある場合、ナルニアンの答えはより良い解決策です。

それとも、ポールを使用して、単一組合の文の中に2つの選択文を組み合わせることができます。

SELECT TOP 1 * from TABLE1 where range < 13000 ORDER BY range desc 
Union 
SELECT TOP 1 * from TABLE1 where range > 13000 ORDER BY range asc; 
関連する問題