我构建了以下使用多条件 CASE 语句的查询。这是使用多条件 CASE 语句的正确/最佳方法吗?
只要我不在 where 中引用 CASE 语句,它就可以工作。我收到“无效的列名称‘场景’。”
如何在查询的 WHERE 部分中引用 ScenarioA?
select
TPID
,(CASE WHEN
([AOppty] > 0) and ([Entitlements] = 0) and ([B Agreement] = 0 and [C Agreement] = 0)
THEN 1 ELSE 0 END) as ScenarioA
from RulesEngine R
--where ScenarioA = 1
最佳答案
SQL Server 允许您为此使用公共(public)表表达式:
WITH
Rules (TPID, ScenarioA)
AS (
SELECT
TPID
, (CASE WHEN
([AOppty] > 0) AND ([Entitlements] = 0) AND ([B Agreement] = 0 and [C Agreement] = 0)
THEN 1 ELSE 0 END
) AS ScenarioA
)
SELECT
TPID, ScenarioA
WHERE
ScenarioA = ...
关于带有 WHERE 子句的 SQL 查询 CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47963475/