Я хотел бы сделать что-то вроде этого:
select * from challenger
where sqrt( square(Launch_temperature-70) )=
( select min( sqrt( square(Launch_temperature-70) ) )
from challenger)
Но если я воспользуюсь двумя другими способами ниже, SQL Server 2017 выдаст мне сообщение об ошибке такого типа:
Подзапрос вернул более 1 значения.Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.
with cte(value)
as
(
select sqrt(square(Launch_temperature- 70)) as value
from challenger
)
select * from challenger
order by
(select value from cte) ASC;
или
select * from challenger
order by
(select sqrt(square(Launch_temperature-70)) from challenger) ASC;
Почему это?В любом случае, чтобы исправить это?
Редактировать: Я нашел решение!В одну сторону:
select top 1 * from challenger
order by
abs(Launch_temperature-70) ASC
В другую сторону:
with cte(value)
as
(
select sqrt(square(Launch_temperature- 70)) as value
from challenger
)
select top 1 * from challenger, cte
order by
(value) ASC;