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

помогите пожалуйста написать быстрый запрос.
Есть таблицы
@Val - значение (id - идентификатор, Value - какое-то значение).
@Levels - уровни (id - это идентификатор из таблицы @Val, LEVEL - уровень, INDEX - порядок в уровне)

Необходимо выбрать значение Value записи, которая на минимальном уровне левее (т.е. если LEVEL у записей равны, выигрывает та, у которой INDEX меньше).

Данные:

DECLARE @Val TABLE(id int, Value int)

INSERT INTO @Val([id], [Value])
VALUES(1, 12), (2, 11)

DECLARE @Levels TABLE (id int, [level] int, [index] int)
INSERT INTO @Levels(id, [level], [index])
VALUES(1, 1, 1), (1, 2, 2), (1, 3, 12),
(2, 1, 1), (2, 2, 3), (1, 3, 18)

SELECT * FROM @Val V
INNER JOIN @Levels L ON V.id = L.id



В данном примере надо выбрать запись ID = 11, Value = 12 т.к. на уровне 2 её INDEX меньше (2 < 3).
Как написать такой запрос?
30 май 17, 18:55    [20524979]     Ответить | Цитировать Сообщить модератору
 Re: Определить значение по индексу в уровне  [new]
aleks2
Guest
SELECT top(1) Value FROM @Val V INNER JOIN @Levels L ON V.id = L.id order by Level asc,  INDEX  asc
30 май 17, 19:16    [20525043]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить