(我查了一下却找不到答案,如果这是重复的,请指出一个链接,然后我将删除该问题)
假设我有以下代码
select CASE WHEN lower(Http_User_Agent) like '%mobi%' then 'Mobile'
else 'Desktop' end as Device
from Http_User_Agent
where Device = 'Mobile'
哪个返回
Msg 207, Level 16, State 1, Line 4
Invalid column name 'Device'.
我基本上想做的是按新创建的列进行过滤Device
。有一个简单的方法吗?
我在Windows 7上使用SQL Server 2008
在执行查询时,Device
别名尚未分配给结果集。因此,您需要执行以下操作之一:
SELECT
CASE WHEN LOWER(Http_User_Agent) LIKE '%mobi%' THEN 'Mobile'
ELSE 'Desktop'
END AS Device
FROM Http_User_Agent
WHERE
CASE WHEN LOWER(Http_User_Agent) LIKE '%mobi%' THEN 'Mobile'
ELSE 'Desktop'
END = 'Mobile'
...即完全不引用新别名。或这个
SELECT *
FROM
(SELECT
CASE WHEN LOWER(Http_User_Agent) LIKE '%mobi%' THEN 'Mobile'
ELSE 'Desktop'
END AS Device
FROM Http_User_Agent)
WHERE Device = 'Mobile'
...即从周围的选择中引用它
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句