T-SQL Column alias on computed column - Invalid column name
All answers can solve your problem but for complicated situation you just can't duplicate your query.
The correct way is by using CROSS and APPLY
select [FirstName], similarity
from [Dev].[dbo].[Name]
cross apply
(
select similarity =
difference([FirstName], 'mitch')
)computed_column
where similarity > 2
order by similarity desc
whit CROSS and APPLY you can use your computed column everywhere on the query
Column aliases and computations are performed in the projection (SELECT
) phase of the query, which occurs after the selection (WHERE
and JOIN
) phase. Because of this, they can't be referenced in the WHERE
clause or in a JOIN
condition because they do not yet exist. You can either use your query with the SELECT
clause as a subquery or you can duplicate the computation in the WHERE
clause:
select *
from
(select [FirstName], difference([FirstName], 'mitch') as similarity
from [Dev].[dbo].[Name]) src
where similarity > 2
order by similarity desc
or
select [FirstName], difference([FirstName], 'mitch') as similarity
from [Dev].[dbo].[Name]
where difference([FirstName], 'mitch') > 2
order by similarity desc