sql-server-2005 - 如何在 SQL Server 的 where 子句中使用别名列名

标签 sql-server-2005

当我尝试在 SQL Server 2005 中执行以下代码时,出现错误

Invalid column name DistanceFromAddress

代码:

select 
    SQRT(POWER(cast(Program_Latitude as float) - cast('41.5126237' as float), 2) +   
    POWER(cast(Program_Longitude as float) - cast('-81.6516411' as float), 2)) * 62.1371192 AS DistanceFromAddress 
from 
    tblProgram 
where 
    DistanceFromAddress < 2

我使用 select 语句正确获取值,但是当我尝试检查条件 where DistanceFromAddress < 2 时我收到错误。

如何解决这个问题?

最佳答案

不能在 WHERE 子句中使用别名列。您可以尝试使用派生表。也许是这样的(抱歉,没有测试过):

SELECT * 
FROM (
    SELECT SQRT( POWER( cast(Program_Latitude as float) 
                        - cast('41.5126237' as float), 2) 
               + POWER( cast(Program_Longitude as float) 
                        - cast('-81.6516411' as float), 2)
               ) * 62.1371192    AS DistanceFromAddress 
    from tblProgram 
    ) mytable
WHERE DistanceFromAddress < 2

关于sql-server-2005 - 如何在 SQL Server 的 where 子句中使用别名列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16161938/

相关文章:

sql - 显示前 n 条记录并合并其余行

sql - 不使用游标更新表格

sql - 为什么 SQL 全文索引不返回包含 # 的单词的结果?

sql - 在sys.servers中找不到服务器 'dbo'。

sql-server-2005 - 为什么我的 SQL Server 审计触发器搞乱了 ODBC 调用/从 Access 刷新?

SQL Server存储过程存储返回值

sql-server - 在 SQL Server 中恢复已删除的记录

sql - 如何使用 WHERE 子句优化 SQL 查询

sql-server - 在 SQL 中合并和修改 XML

sql - 在 SQL Server 中获取日期范围内的所有日期