在 OR 子句中使用别名 SQL
Use alias in OR clause SQL
我试图在 OR 子句中使用列别名,但我不断收到错误:"Invalid column name 'TEAM NAME'"。我看过关于在 WHERE 子句中使用别名的帖子,但我不确定 OR 是否可行。
这是我正在处理的内容:
[TEAM NAME] = CASE WHEN MAX(L.City) IN ('RY','BR') THEN 'Team 1'
WHEN MAX(L.City) IN ('JS','ND') THEN 'Team 2'
WHEN MAX(L.City) IN ('QV','VE') THEN 'Team 3'
WHEN MAX(L.City) IN ('FB','RX') THEN 'Team 4'
ELSE '-' END,
这是我的 OR 子句
AND (U.Player IN ('Tom Thumb','Wallace Gromit') OR [Team Name] <> '-')
不幸的是你必须把它写出来。 PS 这应该在 HAVING
子句中:
AND (U.Player IN ('Tom Thumb','Wallace Gromit') OR
CASE WHEN MAX(L.City) IN ('RY','BR') THEN 'Team 1'
WHEN MAX(L.City) IN ('JS','ND') THEN 'Team 2'
WHEN MAX(L.City) IN ('QV','VE') THEN 'Team 3'
WHEN MAX(L.City) IN ('FB','RX') THEN 'Team 4'
ELSE '-' END,
<> '-')
或
AND (U.Player IN ('Tom Thumb','Wallace Gromit') OR
MAX(L.City) NOT IN ('RY','BR','JS','ND','QV','VE','FB','RX'))
或者,您可以将整个查询视为一个子查询,然后 select 从那个
Select * from (myquery) s where (U.Player IN ('Tom Thumb','Wallace Gromit') OR [Team Name] <> '-')
Similar issue here
您是否尝试过在 SELECT
语句中以这种方式为其设置别名?
CASE WHEN MAX(L.City) IN ('RY','BR') THEN 'Team 1'
WHEN MAX(L.City) IN ('JS','ND') THEN 'Team 2'
WHEN MAX(L.City) IN ('QV','VE') THEN 'Team 3'
WHEN MAX(L.City) IN ('FB','RX') THEN 'Team 4'
ELSE '-' END AS [TEAM NAME]
如果这是子查询或 CTE 的一部分,它将为您提供访问外部查询请求数据中的该列的权限。
此外,WHERE
子句在任何 query/subquery 中的 SELECT
子句之前 运行,因此别名在 WHERE
中不可用如果它是在 SELECT
子句中同时创建的子句 query/subquery.
我试图在 OR 子句中使用列别名,但我不断收到错误:"Invalid column name 'TEAM NAME'"。我看过关于在 WHERE 子句中使用别名的帖子,但我不确定 OR 是否可行。 这是我正在处理的内容:
[TEAM NAME] = CASE WHEN MAX(L.City) IN ('RY','BR') THEN 'Team 1'
WHEN MAX(L.City) IN ('JS','ND') THEN 'Team 2'
WHEN MAX(L.City) IN ('QV','VE') THEN 'Team 3'
WHEN MAX(L.City) IN ('FB','RX') THEN 'Team 4'
ELSE '-' END,
这是我的 OR 子句
AND (U.Player IN ('Tom Thumb','Wallace Gromit') OR [Team Name] <> '-')
不幸的是你必须把它写出来。 PS 这应该在 HAVING
子句中:
AND (U.Player IN ('Tom Thumb','Wallace Gromit') OR
CASE WHEN MAX(L.City) IN ('RY','BR') THEN 'Team 1'
WHEN MAX(L.City) IN ('JS','ND') THEN 'Team 2'
WHEN MAX(L.City) IN ('QV','VE') THEN 'Team 3'
WHEN MAX(L.City) IN ('FB','RX') THEN 'Team 4'
ELSE '-' END,
<> '-')
或
AND (U.Player IN ('Tom Thumb','Wallace Gromit') OR
MAX(L.City) NOT IN ('RY','BR','JS','ND','QV','VE','FB','RX'))
或者,您可以将整个查询视为一个子查询,然后 select 从那个
Select * from (myquery) s where (U.Player IN ('Tom Thumb','Wallace Gromit') OR [Team Name] <> '-')
Similar issue here
您是否尝试过在 SELECT
语句中以这种方式为其设置别名?
CASE WHEN MAX(L.City) IN ('RY','BR') THEN 'Team 1'
WHEN MAX(L.City) IN ('JS','ND') THEN 'Team 2'
WHEN MAX(L.City) IN ('QV','VE') THEN 'Team 3'
WHEN MAX(L.City) IN ('FB','RX') THEN 'Team 4'
ELSE '-' END AS [TEAM NAME]
如果这是子查询或 CTE 的一部分,它将为您提供访问外部查询请求数据中的该列的权限。
此外,WHERE
子句在任何 query/subquery 中的 SELECT
子句之前 运行,因此别名在 WHERE
中不可用如果它是在 SELECT
子句中同时创建的子句 query/subquery.