I would like to do something like this:
select * from challenger
where sqrt( square(Launch_temperature-70) )=
( select min( sqrt( square(Launch_temperature-70) ) )
from challenger)
But if I use other two ways below, SQL Server 2017 gives me this kind of error message:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
with cte(value)
as
(
select sqrt(square(Launch_temperature- 70)) as value
from challenger
)
select * from challenger
order by
(select value from cte) ASC;
or
select * from challenger
order by
(select sqrt(square(Launch_temperature-70)) from challenger) ASC;
Why is that? Anyway to fix to this?
Edit: I have found a solution! One way:
select top 1 * from challenger
order by
abs(Launch_temperature-70) ASC
The other way:
with cte(value)
as
(
select sqrt(square(Launch_temperature- 70)) as value
from challenger
)
select top 1 * from challenger, cte
order by
(value) ASC;