首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server中选择中间行

在Server中选择中间行
EN

Stack Overflow用户
提问于 2015-05-06 19:27:22
回答 7查看 23.5K关注 0票数 6

我有一个表,其中我想选择最后10%的行,用10%的偏移(所以我想选择最后的80%-90%的数据)。

我编写了以下查询

代码语言:javascript
复制
SELECT TOP 10 PERCENT
   [col1], [col2]
FROM [table]
ORDER BY [col1] DESC
OFFSET 10 ROWS

但我收到以下错误:

第5行:“偏移量”附近的不正确语法。

我做错了什么?我使用的是Microsoft 2012,它应该与OFFSET兼容

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-05-06 19:39:36

试试这样的..。

代码语言:javascript
复制
SELECT TOP (50) PERCENT *
FROM (
        SELECT TOP (20) PERCENT 
                      [col1]
                     ,[col2]
        FROM [table]
        ORDER BY [col1] DESC
     )T
ORDER BY [col1] ASC
票数 5
EN

Stack Overflow用户

发布于 2015-05-06 21:47:09

你可以用一个简单的,好的,老的,而不是在:

代码语言:javascript
复制
SELECT TOP 10 PERCENT [col1], [col2] 
FROM [table] 
WHERE [col1] NOT IN (
    SELECT TOP 10 PERCENT [col1]
    FROM [table]
    ORDER BY [col1] DESC
)
ORDER BY [col1] DESC 
票数 3
EN

Stack Overflow用户

发布于 2015-05-06 19:35:44

对于错误消息,数据库是否设置为向后兼容模式

offset表达式只允许您指定行号,而不是百分比。您可以选择80-90百分位数,如:

代码语言:javascript
复制
select  *
from    (
        select  100.0 * row_number() over (order by FirstName desc) /
                    count(*) over () as perc_pos
        from    YourTable
        ) as SubQueryAlias
where   80 <= perc_pos and perc_pos < 90
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30085833

复制
相关文章

相似问题

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