0

sqlステートメントで直接フィールド値に基づいて結果を取得できるソリューションを探しています。

たとえば、次の構造がある場合:

calculated_result     result_one     result_two     result_three
1                     2.50           3.40           2.90
2                     1.90           2.00           3.90
1                     1.30           2.23           1.50

次に、検索を行います。ここで、calculated_resultが1で、result_oneが2.30より大きく、2.65以下のすべての結果が返されるはずです。

問題は、ユーザーが行っている検索に適合する行のみを返す方法がわからないことです。

calculated_result = 1は、result_oneが行の内容よりも大きくて小さいかどうかをチェックする必要がありますcalculated_result = 2は、result_twoが行の内容よりも大きくて小さいかどうかをチェックする必要があります。

それが理にかなっていることを願っています。

4

4 に答える 4

4
select  *
from    myTable
where   (calculated_result = 1 and result_one between 2.30 and 2.650)
or      (calculated_result = 2 and result_two between 2.30 and 2.650)
or      (calculated_result = 3 and result_three between 2.30 and 2.650)

または、使用したい場合case

select  *
from    myTable
where   case 
          when calculated_result = 1 then result_one 
          when calculated_result = 2 then result_two
          when calculated_result = 3 then result_three
        end between 2.30 and 2.650
于 2013-02-01T18:30:18.343 に答える
1

CASE演算子を使用してみることができます。

SELECT * FROM yourTable
WHERE (CASE
  WHEN calculated_result = 1 THEN result_one
  WHEN calculated_result = 2 THEN result_two
END) > 2.3
AND (CASE
  WHEN calculated_result = 1 THEN result_one
  WHEN calculated_result = 2 THEN result_two
END) <= 2.65
于 2013-02-01T18:35:27.960 に答える
0

これを試して

SELECT 
       * 
FROM 
       table_name 
WHERE 
       calculated_result = 1 AND
       result_one > 2.30 AND
       result_one <= 2.65 
于 2013-02-01T18:30:09.063 に答える
0

別:

select  *
from    myTable
where   calculated_result in (1, 2, 3) and 
(result_one between 2.30 and 2.650 or result_two between 2.30 and 2.650
or result_three between 2.30 and 2.650)
;

デモ

于 2013-02-01T18:33:26.513 に答える