在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'.
回答
你不能在同一个引用列,别名SELECT或WHERE或GROUP BY定义它。记住这一点的简单方法:该FROM子句定义SELECT.
处理此问题的两种常用方法是 CTE 和子查询。但您也可以使用APPLY:
SELECT v.EmailName
FROM Company C CROSS APPLY
(VALUES (c.email)
) v(EmailName)
WHERE v.EmailName LIKE '%g%';
如果您有相互引用的表达式链,则此方法特别方便,因为您可以继续添加更多横向连接(实现内容的技术术语APPLY)。