2011-11-18 83 views
3

我有this question張貼的表格。SQL Server訂購時間由最近的,然後最接近

•測量(MeasureID,時間,距離,值)

•活動(事件ID,時間價值)

•EventValues(EventDataID,事件ID,類型,值)

我目前能得到每次測量的最近事件,但是我想要做的是獲得最近的事件,但如果一個事件不存在(即測量在第一個事件之前),我想獲得CLOSEST事件(所以基本上是第一個事件事件)

我在想,也許順序顯示時間差先顯示積極的時間,然後在我的子查詢中最後的負面時間,這是可能的,我該如何實現它?

+0

將表格複製/粘貼到這個問題太難了嗎? –

+0

不,但額外的信息可能有用,我認爲這是正確的程序 – Simon

+0

Gotchya ..我的不好。你應該提到xP –

回答

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 
+0

+1謝謝,我只需要刪除WHERE子句並在ABS函數中使用DateDiff – Simon