我的查询使用CASE
表达式创建新列。
如何在随后的WHERE
子句中引用此列?
我最好通过原始WHEN
行中的CASE
表达式查询此列吗?
答案 0 :(得分:1)
您必须将基本查询放入子查询或CTE中,以便外部查询代码能够引用这个新创建的"在运行中"按名称列。
根据Logical Processing Order of the SELECT statement,您不能直接引用新推出的"即时" WHERE
子句中的列(因为WHERE
子句是在SELECT
中的列列表之前处理的。
类似的东西:
SELECT (list-of-columns)
FROM
(SELECT
(list-of-columns),
CASE ...... END AS NewColumn
FROM
dbo.YourTable) x
WHERE
x.NewColumn = .......
或CTE:
USING YourBaseCTE AS
(
SELECT
(list-of-columns),
CASE ...... END AS NewColumn
FROM
dbo.YourTable
)
SELECT (list-of-columns)
FROM YourBaseCTE
WHERE NewColumn = .......