Sql server 如何获得动态顶部行数?

Sql server 如何获得动态顶部行数?,sql-server,linq-to-sql,Sql Server,Linq To Sql,我想得到一个表的顶部行数-行数/10-1。如果有63行,它将返回3行,90行将返回10行,85行将返回5行,以此类推。。当然,这可以在两个查询中完成,只是想知道是否可以在一个查询中完成 如果你们知道一个直接的sql查询,那就太好了,但理想情况下我想要一个linq到sql的答案。我不知道你的公式是如何映射到示例的。90-int90/10-1是82。但基本概念是: 从foo limit select count-select count/10-1中选择*选项 只希望您有一个像样的查询优化器 SELE

我想得到一个表的顶部行数-行数/10-1。如果有63行,它将返回3行,90行将返回10行,85行将返回5行,以此类推。。当然,这可以在两个查询中完成,只是想知道是否可以在一个查询中完成


如果你们知道一个直接的sql查询,那就太好了,但理想情况下我想要一个linq到sql的答案。

我不知道你的公式是如何映射到示例的。90-int90/10-1是82。但基本概念是:

从foo limit select count-select count/10-1中选择*选项

只希望您有一个像样的查询优化器

SELECT TOP 10 PERCENT * FROM Table


我在Linq to Sql方面很弱,但我不认为你不能避免2次查找,因为你仍然需要子查询来获得计数*,生成的Sql仍然会有子查询,这篇类似文章似乎验证了这一点

是的,但他也说LinqToSql,他指的是TSQL。我甚至不知道你能做到。看起来我无法避免两次查找。谢谢
DECLARE @pct AS INT
SELECT @pct = (COUNT(*) / 10 )-1 FROM Table

SELECT TOP (@pct) * FROM Table 
DECLARE @pct AS INT
SELECT @pct = (COUNT(*) / 10 )-1 FROM Table

SET ROWCOUNT @pct

SELECT * FROM Table