Время заказа SQL Server по последнему, затем по ближайшему - PullRequest
3 голосов
/ 18 ноября 2011

У меня есть таблицы, опубликованные в этом вопросе .

• Измерения (MeasureID, Время, Расстояние, Значение)

• События (EventID, Time Value)

• EventValues ​​(EventDataID, EventID, Type, Value)

В настоящее время я могу получить самые последние события для каждого измерения, однако я хотел бы получить самое последнее событие, но еслиодно не существует (т. е. измерение выполняется ДО первого события), я хотел бы получить событие CLOSEST (поэтому, в основном, первое событие)

Я думаю, возможно, упорядочить по разнице во времени, показывая положительные времена сначала, а затем отрицательные временапоследний в моем подзапросе, это возможно, и как я могу достичь его?

1 Ответ

2 голосов
/ 18 ноября 2011

Не проверял, но я думаю, что-то вроде приведенной ниже логики случая будет работать.

(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
...