首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么在Server中使用ROW_NUMBER时会出现错误?

为什么在Server中使用ROW_NUMBER时会出现错误?
EN

Stack Overflow用户
提问于 2012-05-31 20:47:54
回答 1查看 5.7K关注 0票数 4

我编写了以下SQL代码,以便在我的Server上运行。

代码语言:javascript
代码运行次数:0
运行
复制
SELECT 
   atd.DeviceID, 
   ROW_NUMBER() over(order by atd.deviceid) as rownumber
FROM 
   dbo.Devices atd  
WHERE 
  (rownumber between 11 and 20);

我得到以下输出:

Msg 207,16级,状态1,第5行

列名“行号”无效。

Msg 207,第16级,状态1,第5行

列名“行号”无效。

如您所见,我希望使用ROW_NUMBER只获取通常由查询返回的行的子集。我以前从未使用过ROW_NUMBER函数。

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2012-05-31 20:49:59

不能直接使用列的别名,请将其包装在派生表或CTE上:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT *
FROM (  SELECT DeviceID, 
        ROW_NUMBER() over(order by deviceid) as rownumber
        FROM dbo.Devices) atd 
WHERE (rownumber between 11 and 20);

代码语言:javascript
代码运行次数:0
运行
复制
;WITH CTE AS
(
    SELECT DeviceID, 
    ROW_NUMBER() over(order by deviceid) as rownumber
    FROM dbo.Devices
)
SELECT *
FROM CTE 
WHERE (rownumber between 11 and 20);
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10841050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档