2

この質問は、私のこの他の質問 に基づいており、同じ基本情報をすべて使用しています。そのリンクは、私のテーブルレイアウトと単純な結合の基本的な要点を示しています。

Table1からすべてのレコードを選択し、Valueがリンクされたしきい値未満であるかどうかでそれらを単純にソートする 別のクエリを作成したいと思います。

繰り返しになりますが、これを突き刺してくれる人には感謝します。データベースは私の強みではありませんでした。

4

3 に答える 3

7
SELECT t1.LogEntryID, t1.Value, t1.ThresholdID, 
    case when t1.Value < t2.threshold then 1 else 0 end as Rank
FROM Table1 t1 
INNER JOIN Table2 t2 ON t1.ThresholdID = t2.ThresholdID 
ORDER By Rank

逆の順序が必要な場合は、DESC後で追加できます。ORDER By Rank

于 2009-07-17T20:18:36.177 に答える
4

OrbManによって与えられた答えに似ていますが、列ごとに順序を表示するように強制されないように、CASEをORDERBYで明示的にすることをお勧めします。

SELECT
  t1.LogEntryID
 ,t1.Value
 ,t1.ThresholdID
FROM 
  Table1 t1
  JOIN Table2 t2 ON t2.ThresholdID = t1.ThresholdID
ORDER BY
  CASE WHEN t1.Value < t2.threshold
       THEN 1
       ELSE 0
  END ASC
于 2009-07-17T20:22:32.660 に答える
0

考えただけですが、戻り列の1つとして「threshold--value」を使用できませんでしたか?

そうした場合(そして列が数値であった場合)、値がしきい値からどれだけ近い(または遠い)かを確認することもできます。

正または0の場合はしきい値を下回り、負の場合はしきい値を下回ります。

于 2009-07-17T21:17:22.033 に答える