この質問は、私のこの他の質問 に基づいており、同じ基本情報をすべて使用しています。そのリンクは、私のテーブルレイアウトと単純な結合の基本的な要点を示しています。
Table1からすべてのレコードを選択し、Valueがリンクされたしきい値未満であるかどうかでそれらを単純にソートする 別のクエリを作成したいと思います。
繰り返しになりますが、これを突き刺してくれる人には感謝します。データベースは私の強みではありませんでした。
この質問は、私のこの他の質問 に基づいており、同じ基本情報をすべて使用しています。そのリンクは、私のテーブルレイアウトと単純な結合の基本的な要点を示しています。
Table1からすべてのレコードを選択し、Valueがリンクされたしきい値未満であるかどうかでそれらを単純にソートする 別のクエリを作成したいと思います。
繰り返しになりますが、これを突き刺してくれる人には感謝します。データベースは私の強みではありませんでした。
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
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
考えただけですが、戻り列の1つとして「threshold--value」を使用できませんでしたか?
そうした場合(そして列が数値であった場合)、値がしきい値からどれだけ近い(または遠い)かを確認することもできます。
正または0の場合はしきい値を下回り、負の場合はしきい値を下回ります。