Как получить динамический верхний ряд строк? - PullRequest
0 голосов
/ 02 мая 2009

Я хочу получить верхнюю часть #nr_of_rows - (int) (# nr_of_rows / 10 - 1) таблицы. Так, как если бы у вас было 63 строки, было бы 3 строки, 90 строк - 10, 85 - 5 и т. Д. Конечно, это можно сделать в двух запросах, просто интересно, можно ли это сделать за один запрос. 1001 *

Если вы, ребята, знаете о прямом SQL-запросе, было бы здорово, но в идеале я хотел бы получить ответ linq to sql.

Ответы [ 2 ]

2 голосов
/ 02 мая 2009
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-версия TOP PERCENT

0 голосов
/ 02 мая 2009

Я не понимаю, как ваша формула соответствует примерам. 90 - (int) (90/10 - 1) - 82. Но основная концепция:

выберите * из предела foo (выберите количество () - (выберите (количество () / 10 - 1)));

Надеюсь, у вас есть хороший оптимизатор запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...