根据新创建的列进行过滤

大卫·阿伦堡(David Arenburg)

(我查了一下却找不到答案,如果这是重复的,请指出一个链接,然后我将删除该问题)

假设我有以下代码

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

过滤数据框并将新创建的列添加到原始df

子查询引用新创建的列

如何在新创建的具有旧列别名的列上进行分组?

如何在SQL中使用where条件对新创建的列进行计数以用于group by

如何根据下拉选择重新创建表列

根据现有响应重新创建 json 响应

避免使用哈希图进行片段重新创建

在另一列中使用新创建的主键

从jdbc / postgresql获取新创建表的列元数据

在 Laravel 迁移中使用新创建的列

如何从新创建的csv文件列中添加?

Impala 中新创建的列的 WHERE 条件

新创建了未识别的列

查找新创建的文件

找到新创建的元素

使用“过滤器”重新创建underscore.js“拒绝”

根据索引快速重新创建python字符串

在 matplotlib 中根据色标重新创建颜色图

根据扳手数据库中的插入/更新创建触发器

根据数据可视化基础重新创建绘图

管道化熊猫:创建依赖于新创建的列的列

使用ViewModel重新创建片段时如何进行一次获取操作

使用者在重新启动之前无法从新创建的分区进行轮询

重新创建函数签名并通过C ++中的模板包进行调用

是否正在重新创建我的React组件而不是进行更新?

使用新创建的文件的名称进行搜索时,FileIterator没有结果

要重新创建以下用户界面以进行时间推移(时间轴)

要防止在Angular 2中进行布线时重新创建组件

发送请求到新创建的码头服务器进行测试