如何获得动态的最大行数?

时间:2009-05-02 00:40:03

标签: sql-server linq-to-sql

我希望得到表格的#nr_of_rows - (int)(#nr_of_rows / 10 - 1)。因此,如果您有63行,它将返回3行,90行将返回10,85将返回5等等。当然,这可以在两个查询中完成,只是想知道它是否可以在一个查询中完成。 / p>

如果你们知道一个直接的SQL查询,它会很棒,但理想情况下我想要一个linq to sql answer。

2 个答案:

答案 0 :(得分:2)

SELECT TOP 10 PERCENT * FROM Table

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

我在Linq到Sql上相当弱,但我认为你不能避免2次查找,因为你仍然需要子查询来获取计数(*),所生成的sql仍然会有这个类似帖子似乎验证的子查询LINQ version of TOP PERCENT

答案 1 :(得分:0)

我不了解您的公式如何映射到示例。 90 - (int)(90/10 - 1)是82.但基本概念是:

从foo限制中选择*(选择计数() - (选择(计数()/ 10 - 1)));

希望你有一个不错的查询优化器。