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

Откуда:
Сообщений: 3
Привет,
помогите, пожалуйста, написать запрос, который выведет приближенное значение к таблице "O"

Источники:

Таблица "О"
"c"
23005
30000
45000
58000

Таблица "P"
"c", "p"
23000; 2
30000; 3
45000; 1
58000; 2
23 янв 19, 13:30    [21792054]     Ответить | Цитировать Сообщить модератору
 Re: Приближенное значение  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
insaider,
Наверняка можно проще, но что-то вроде
DECLARE @c TABLE ( a INT)

INSERT INTO @c
VALUES
(22999),
(23004),
(23005),
(30000),
(45000),
(58000)

DECLARE @P TABLE ( a INT)

INSERT INTO @p
VALUES
(23000),
(30000),
(45000),
(58000)

SELECT 
*
FROM @P p
OUTER APPLY
(
	SELECT TOP 1 c
	FROM 	
	(
		SELECT MIN(a) as c
		FROM @C  
		WHERE  a >= p.a
		UNION ALL
		SELECT MAX(a) as c
		FROM @C  
		WHERE  a <= p.a
	) c
	WHERE c.c IS NOT NULL
	ORDER BY p.a - c.c DESC
) x
23 янв 19, 13:44    [21792077]     Ответить | Цитировать Сообщить модератору
 Re: Приближенное значение  [new]
insaider
Member

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

спасибо, подскажите, что делает вот это условие:

ORDER BY p.a - c.c DESC
23 янв 19, 14:22    [21792156]     Ответить | Цитировать Сообщить модератору
 Re: Приближенное значение  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
insaider
TaPaK,

спасибо, подскажите, что делает вот это условие:

ORDER BY p.a - c.c DESC

там наверное правильней ABS(p.a - c.c) DESC
самое близкое из значений сверху и снизу
23 янв 19, 14:23    [21792160]     Ответить | Цитировать Сообщить модератору
 Re: Приближенное значение  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
ну и ASC жеж вместо DESC :)
23 янв 19, 14:30    [21792184]     Ответить | Цитировать Сообщить модератору
 Re: Приближенное значение  [new]
insaider
Member

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

Большое спасибо ! ;)
23 янв 19, 14:34    [21792196]     Ответить | Цитировать Сообщить модератору
 Re: Приближенное значение  [new]
aleks222
Member

Откуда:
Сообщений: 956
TaPaK
insaider
TaPaK,

спасибо, подскажите, что делает вот это условие:

ORDER BY p.a - c.c DESC

там наверное правильней ABS(p.a - c.c) DESC
самое близкое из значений сверху и снизу


Опять учат плохому.
Правильнее - сделать два. Индексы поиимеют шансы...
23 янв 19, 14:45    [21792215]     Ответить | Цитировать Сообщить модератору
 Re: Приближенное значение  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aleks222
TaPaK
пропущено...

там наверное правильней ABS(p.a - c.c) DESC
самое близкое из значений сверху и снизу


Опять учат плохому.
Правильнее - сделать два. Индексы поиимеют шансы...

Сортировка по двум значением всего
23 янв 19, 14:47    [21792223]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить