在sql查询中引用重命名的列

我正在尝试进行查询并引用重命名的列,但它似乎不起作用。我尝试了以下方法:

SELECT (Company.email) AS EmailName
FROM   Company
WHERE  EmailName  LIKE '%g%'


SELECT Company.email AS EmailName
FROM   Company
WHERE  EmailName  LIKE '%g%'


SELECT Company.email AS 'EmailName'
FROM   Company
WHERE  EmailName  LIKE '%g%'


SELECT Company.email AS 'EmailName'
FROM   Company
WHERE  'EmailName'  LIKE '%g%'

以下错误不断出现:

Msg 207, Level 16, State 1, Line 3
Invalid column name 'EmailName'.

回答

你不能在同一个引用列,别名SELECTWHEREGROUP BY定义它。记住这一点的简单方法:该FROM子句定义SELECT.

处理此问题的两种常用方法是 CTE 和子查询。但您也可以使用APPLY

SELECT v.EmailName
FROM Company C CROSS APPLY
     (VALUES (c.email)
     ) v(EmailName)
WHERE v.EmailName LIKE '%g%';

如果您有相互引用的表达式链,则此方法特别方便,因为您可以继续添加更多横向连接(实现内容的技术术语APPLY)。


以上是在sql查询中引用重命名的列的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>