Сортировка внутреннего запроса в SQL Server - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть запрос:

SELECT *
FROM   (SELECT COLA,
               COLB,
               COLC,
               COLD,
               ROW_NUMBER() OVER(ORDER BY COLA) AS ROWNUMBER
        FROM   TABLEXYZ)AS Tab1
WHERE  ROWNUMBER BETWEEN 1 AND 10
ORDER  BY COLA  

Этот запрос работает нормально, если он должен быть отсортирован на основе COLA, но возникают проблемы, если я пытаюсь сортировать на основе COLB, COLC и т. Д. Сортировка не работает. Я хочу отсортировать внутреннюю таблицу, но порядок по предложениям не работает, и поэтому мои отсортированные результаты не точны.

Ответы [ 3 ]

1 голос
/ 07 февраля 2012

Попробуйте использовать ТОП 100%.

SELECT *
FROM   (SELECT TOP 100% COLA,
           COLB,
           COLC,
           COLD,
           ROW_NUMBER() OVER(ORDER BY COLA) AS ROWNUMBER
           FROM TABLEXYZ
           ORDER BY COLB ASC) AS Tab1
WHERE  ROWNUMBER BETWEEN 1 AND 10
ORDER  BY COLA  
1 голос
/ 07 февраля 2012

Хммм ... Если вышеупомянутое не сработало, не берите в голову, я только что проверил это:

select * from(
select top 10 ROW_NUMBER() OVER(Order by ColumnA) as ROWN, ColumnA, ColumnB
from dbo.TableXYZ) as lala
order by ColumnB

Это работает безупречно.Честно говоря, я не знаю, почему ваш запрос не работает (вы не сказали так), но это дает точно такую ​​же вещь.

1 голос
/ 06 февраля 2012

Я думаю, что сортировка должна выполняться также в предложении rownumber запроса.

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