【发布时间】:2014-07-26 14:56:51
【问题描述】:
在我的选择语句中有一个 CASE WHEN THEN ELSE END AS 语句,我无法在 WHERE 子句中对其进行过滤。我不明白为什么这会是一个问题,有人可以解释一下吗?
SELECT
CASE
WHEN m.Country IN ('CANADA', 'UNITED STATES', 'USA', 'MEXICO') THEN 'NA'
WHEN m.Country IN ('BRAZIL') THEN 'JD2'
WHEN m.Country IN ('NZ', 'NEW ZEALAND', 'AUSTRALIA', 'AUSTRALASIA') THEN 'ANZ'
ELSE 'Unknown'
END AS DerivedRegion,
m.ID,
m.[Account Name],
m.[Display Name],
m.[Last Name],
m.[First Name]
FROM dbo.Users AS m
WHERE DerivedRegion = 'Unknown'
WHERE 子句给了我错误:无效的列名 'DerivedRegion',为什么?
【问题讨论】:
-
不相关,但是如果你只想要未知区域,那么select中的case语句有什么意义呢?您的所有结果都应在派生区域列中显示“未知”。
-
脚本比我展示的要多,这个问题没有必要。
标签: sql sql-server case where