我有一个声明 - 简化
SELECT UserID,
CASE WHEN UserName = 'xxx' THEN 1 ELSE 0 AS Deleted
FROM User
WHERE Deleted = 0;
但这不起作用,因为Deleted
无法使用。
有解决方法吗?我不能这样解决WHERE UserName <> 'xxx'
,因为在我的真实陈述中,这是一个巨大的子选择。
答案 0 :(得分:4)
将原始查询包装在派生表中。 (由于列别名在同一查询的where子句中不可用。)
select *
from
(
SELECT UserID,
CASE WHEN UserName = 'xxx' THEN 1 ELSE 0 END AS Deleted
FROM User
) dt
WHERE dt.Deleted = 0;
答案 1 :(得分:0)
我们可以在没有子查询的情况下使用如下。
SELECT *
FROM [User]
WHERE (CASE WHEN UserName = 'xxx' THEN 1 ELSE 0 END)=0