我有一个表,其中我想选择最后10%的行,用10%的偏移(所以我想选择最后的80%-90%的数据)。
我编写了以下查询
SELECT TOP 10 PERCENT
[col1], [col2]
FROM [table]
ORDER BY [col1] DESC
OFFSET 10 ROWS但我收到以下错误:
第5行:“偏移量”附近的不正确语法。
我做错了什么?我使用的是Microsoft 2012,它应该与OFFSET兼容
发布于 2015-05-06 19:39:36
试试这样的..。
SELECT TOP (50) PERCENT *
FROM (
SELECT TOP (20) PERCENT
[col1]
,[col2]
FROM [table]
ORDER BY [col1] DESC
)T
ORDER BY [col1] ASC发布于 2015-05-06 21:47:09
你可以用一个简单的,好的,老的,而不是在:
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 发布于 2015-05-06 19:35:44
对于错误消息,数据库是否设置为向后兼容模式?
offset表达式只允许您指定行号,而不是百分比。您可以选择80-90百分位数,如:
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 < 90https://stackoverflow.com/questions/30085833
复制相似问题