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 在 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
于 2009-07-17T20:22:32.660 回答
0

只是一个想法,但您不能使用“阈值 - 值”作为您的返回列之一吗?

如果您这样做了(并且列是数字),您还可以看到该值与阈值有多近(或多远)。

任何正数或 0 都将低于阈值,任何负数都不会。

于 2009-07-17T21:17:22.033 回答