У меня есть три простых запроса T-SQL.Первый - получить записи в диапазоне границ (тип DATETIME):
SELECT value, timestamp
FROM myTable
WHERE timestamp BETWEEN @startDT AND @endDT
Второй - получить ближайшую запись к @startDT (тип DATETIME)
SELECT TOP 1
value, timestamp
FROM myTable
WHERE timestamp > @startDT
ORDER BY timestamp DESC
и последний - получить ближайшую запись после @endDT:
SELECT TOP 1
value, timestamp
FROM myTable
WHERE timestamp < @endDT
ORDER BY timestamp ASC
Я хотел бы получить все записи из трех вышеупомянутых запросов в виде одной группы записей.Я пытался использовать UNION, но кажется, что подзапросы в UNION не позволяют использовать предложение ORDER BY.Есть ли эффективный способ получить мой результат?
. . * | * * * * * | * . . .
start end
На приведенном выше графике просто показаны записи * s в качестве обязательных записей, а | ... |это границы.
Кстати, объем данных в myTable огромен.Насколько я понимаю, UNION не является эффективным способом получения данных от UNION.Есть ли эффективный способ получения данных без UNION?