此问题基于我的 this other question ,并使用了所有相同的基本信息。该链接显示了我的表格布局和简单连接的基本要点。
我想编写另一个查询,从 Table1 中选择每条记录,然后根据Value是否小于链接阈值对它们进行排序。
再次,我感谢任何愿意接受这一点的人。数据库从来都不是我的强项。
答案 0 :(得分: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
。
答案 1 :(得分:4)
与OrbMan给出的答案类似,但我更喜欢CASE在ORDER BY中显式,因此您不必强制按列显示您的订单。
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
答案 2 :(得分:0)
只是一个想法,但你不能使用'threshold - value'作为你的返回列之一吗?
如果您这样做(并且列是数字的),您还可以看到该值与阈值的接近程度(或远)。
任何积极的东西或0都会低于门槛,任何负面的东西都不会。