2015-05-27 4 views
1

У меня есть этот запрос ниже, и мне нужно получить от него определенное количество строк, например, 100 строк. Мне также нужно получить строки из определенного количества строк, например, от 100 до 200, от 200 до 300 и т. Д. Я экспериментировал с функцией ROW_NUMBER() без везения.Выберите конкретное количество строк из запроса

NB! Не может нас «смещение 100 строк выборки рядом только 100 строк», потому что он работает только в MSSQL 2012.

SELECT 
     Result.CaseCount, 
     CaseID, 
     ChildCaseName, 
     CPR, 
     FirstName, 
     LastName, 
     CustomerInfoID, 
     InstitutionName, 
     CaseDeadline, 
     [StatusName], 
     [StatusOwner] 
FROM ResultSelectorCTE, 
    (select count(*) as CaseCount FROM ResultSelectorCTE) AS Result 

Как я могу это сделать?

+1

Используйте 'ВЫБРАТЬ TOP 100 Column1, cOLUMN2 оТ Table' –

+3

Примечание: при использовании "верх", "предел" е tc, вы всегда должны включать предложение 'order by' ... в противном случае: *, который вы выбираете? * –

+0

Вы хотите получить X строк или получить все, а также количество строк? Вы отметили C# - вы хотите получить счет в коде C# или в SQL-запросе? –

ответ

2

мне нужно получить строки из конкретной строки рассчитывать, как от 100 до 200, от 200 - 300 и т.д.

select Foo, Bar 
from SomeTable 
order by Blap 
offset 100 rows fetch next 100 rows only 

Или сделать это с ROW_NUMBER():

select x.Foo, x.Bar 
from (
    select Foo, Bar, ROW_NUMBER() over(order by Blap desc) as [Row] 
    from SomeTable) x 
where x.[Row] > 100 and x.[Row] <= 200 
order by x.[Row] 
+0

Есть ли способ получить счет здесь? –

+0

@ Örvar, который считается ? Если вы имеете в виду общее количество строк, я бы сделал это как отдельный запрос: 'select count (1) from SomeTable' –

+0

Да, общее количество строк. Я просто надеялся, что можно получить всю необходимую информацию в один звонок. Я работаю над проблемой производительности для клиента. Возможно, если «большой» звонок был возможен, это могло бы привести к еще большему повышению производительности, вызвав выполнение двух вызовов в базе данных ... Спасибо за вашу помощь. будет более точным в следующий раз, когда я отправлю вопрос. –

3

MSSQL: SELECT TOP 100 Result.CaseCount,...

MYSQL: SELECT ... LIMIT 100;

1
SELECT TOP X Result.CaseCount, CaseID, ChildCaseName, ... 

Где X это ваш номер.

0
Select TOP 100 [column1],[column2].....FROM TABLE 

, но это будет зависеть от запроса, который вы даете. Если нет orderby там не будет тянуть различный результат каждый раз ..

Смежные вопросы