Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL запрос - ближайшие значение по времени  [new]
Sasha8111
Member

Откуда:
Сообщений: 33
Уважаемые специалисты - подскажите как правильно построить SQL запрос

Есть таблица Energy из следующих полей:
DateTime - datetime2(0)
ElectroActive - numeric(18, 1)
ElectroReactive - numeric(18, 1)
ElectroFull- numeric(18, 1)


У пользователя должна быть возможность вводить минимальное и максимальное значение времени (поле DateTime) - условно DateTimeMin и DateTimeMax. И при этих значениях времени нужно вывести соответственные значения во всех остальных полях. То есть на выходе должна получиться таблица из 2-х строк. Но проблема в том, что пользовательских DateTimeMin и DateTimeMax может не быть в основной таблице Energy, то есть вместо DateTimeMin должно быть подставлено ближайшее бОльшее значение, а вместо DateTimeMax - ближайшее меньшее значение в базе.
Посоветуйте как правильно построить SQl запрос

Спасибо всем
26 сен 15, 12:29    [18198819]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос - ближайшие значение по времени  [new]
ЦБ
Member [заблокирован]

Откуда:
Сообщений: 2773
select top 1 ... where DateTime>=DateTimeMin order by DateTime
union all
select top 1 ... where DateTime<=DateTimeMax order by DateTime desc
26 сен 15, 13:41    [18199004]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос - ближайшие значение по времени  [new]
o-o
Guest
только оба запроса надо через CTE оформить,
а то ругнется на order by, к-ый не в конце юниона
26 сен 15, 22:28    [18200009]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос - ближайшие значение по времени  [new]
Sasha8111
Member

Откуда:
Сообщений: 33
Спасибо) заработало
27 сен 15, 15:37    [18201097]     Ответить | Цитировать Сообщить модератору
 Re: SQL запрос - ближайшие значение по времени  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Sasha8111,

если нет CTE, то можно написать table-values function, например и двумя insert. Решение зависит от контекста задачи.
28 сен 15, 11:28    [18203330]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить