Нумеровавшая страницы сортировка использования запроса на различных столбцах с помощью ROW_NUMBER () ПО () в SQL Server 2005

В соответствии с поддержкой AWS используемая мной группа безопасности не разрешала порт 8081, поэтому проверка работоспособности ALB не удалась. Как только я добавил это правило, проверка здоровья проходит. Что меня оттолкнуло, так это то, что я смог свернуться через этот порт.

8
задан Leandro López 23 October 2008 в 14:56
поделиться

1 ответ

Простой:

SELECT
  OrderID, CustomerID, EmployeeID, OrderDate, ShippedDate,
  @Offset, @Limit, @SortColumn, @SortDirection
FROM
  Orders
WHERE
  ROW_NUMBER() OVER 
  (
    ORDER BY
      /* same expression as in the ORDER BY of the whole query */
  ) BETWEEN (@PageNum - 1) * @PageSize + 1 AND @PageNum * @PageSize 
  /* AND more conditions ... */
ORDER BY
  CASE WHEN @SortDirection = 'A' THEN
    CASE @SortColumn 
      WHEN 'OrderID'    THEN OrderID
      WHEN 'CustomerID' THEN CustomerID
      /* more... */
    END
  END,
  CASE WHEN @SortDirection = 'D' THEN
    CASE @SortColumn 
      WHEN 'OrderID'    THEN OrderID
      WHEN 'CustomerID' THEN CustomerID
      /* more... */
    END 
  END DESC

Это отсортирует на ПУСТОМ УКАЗАТЕЛЕ (DESC), если порядок ASC будет выбран, или наоборот.

Позвольте ROW_NUMBER () функциональная работа по тому же выражению ORDER BY.

6
ответ дан 5 December 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: