Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 выборка после сортировки  [new]
panthe
Member

Откуда:
Сообщений: 14
Мне нужно сначала отсортировать данные по номеру(представлен строкой переменной длинны, не число) а затем вывести кусок из упорядоченного набора. нужно для постраничного вывода большого объема данных через хранимую процедуру. Ошибка - Предложение ORDER BY не допускается в представлениях, встроенных функциях, производных таблицах, вложенных запросах и обобщенных табличных выражениях, если вместе с ним не указано предложение TOP, OFFSET или FOR XML.

SELECT * FROM (SELECT * FROM data_from_ch ORDER BY invoice_number) AS a
	WHERE ROW_NUMBER() > @skip AND ROW_NUMBER() <= @skip + @countatpage;
4 мар 19, 20:55    [21824827]     Ответить | Цитировать Сообщить модератору
 Re: выборка после сортировки  [new]
panthe
Member

Откуда:
Сообщений: 14
SELECT * FROM data_from_ch AS a
	WHERE ROW_NUMBER() OVER (ORDER BY a.invoice_number) > @skip AND
	 ROW_NUMBER() OVER (ORDER BY a.invoice_number) <= @skip + @countatpage;
4 мар 19, 21:36    [21824842]     Ответить | Цитировать Сообщить модератору
 Re: выборка после сортировки  [new]
panthe
Member

Откуда:
Сообщений: 14
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY b.invoice_number) AS num, b.*
	FROM data_from_ch AS b) AS a
	WHERE num > @skip AND
	 num <= @skip + @countatpage;
4 мар 19, 21:41    [21824846]     Ответить | Цитировать Сообщить модератору
 Re: выборка после сортировки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30702
panthe
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY b.invoice_number) AS num, b.*
	FROM data_from_ch AS b) AS a
	WHERE num > @skip AND
	 num <= @skip + @countatpage;
Тут появляется ошибка?
Вроде всё правильно.
5 мар 19, 00:26    [21824936]     Ответить | Цитировать Сообщить модератору
 Re: выборка после сортировки  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
как же правильно когда ORDER BY тут и нету.

Автор top @countatpage тебя спасет
5 мар 19, 08:58    [21825036]     Ответить | Цитировать Сообщить модератору
 Re: выборка после сортировки  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30702
Ivan Durak
как же правильно когда ORDER BY тут и нету.
А, я думал, это запрос с ошибкой.

panthe
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY b.invoice_number) AS num, b.*
	FROM data_from_ch AS b) AS a
	WHERE num > @skip AND
	 num <= @skip + @countatpage;
Теперь добавляем ORDER BY:
SELECT * 
FROM (
	SELECT ROW_NUMBER() OVER (ORDER BY b.invoice_number) AS num, b.*
	FROM data_from_ch AS b
	) AS a
WHERE num > @skip 
  AND num <= @skip + @countatpage        
ORDER BY num
5 мар 19, 23:05    [21825791]     Ответить | Цитировать Сообщить модератору
 Re: выборка после сортировки  [new]
nullin
Member

Откуда: pullin
Сообщений: 131
SELECT b.*
  FROM data_from_ch AS b
 ORDER BY ROW_NUMBER() OVER (ORDER BY b.invoice_number)
OFFSET @skip ROWS
 FETCH NEXT @countatpage ROWS ONLY
6 мар 19, 10:36    [21825964]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить