SQL Server按最近的顺序排序,然后最接近

时间:2011-11-18 01:19:04

标签: sql sql-server sql-order-by

我在this question张贴了表格。

•测量(MeasureID,时间,距离,值)

•事件(EventID,时间价值)

•EventValues(EventDataID,EventID,Type,Value)

我目前可以获得每次测量的最新事件,但我想做的是获取最新事件,但如果一个不存在(即测量是在第一次事件之前)我想得到CLOSEST事件(基本上是第一个事件)

我想也许按时间顺序排序显示正面时间,然后在我的子查询中显示负面时间,这是可能的,我怎么能实现呢?

1 个答案:

答案 0 :(得分:2)

没有经过测试,但我认为下面的案例逻辑就可以了。

(SELECT TOP 1 EV.value FROM [Event] E JOIN EventValues EV ON E.EventID = EV.EventID 
  WHERE M.Time >= E.Time 
  ORDER BY case when M.Time > E.Time then 1 else 2 end, 
           abs(M.Time-E.Time)) AS Data