У меня есть CTE с последними 3 строками таблицы, отсортированными по VersionNumber DESC
. Как я могу отсортировать их в обратном порядке, чтобы иметь наименьшее значение VersionNumber
из этих 3, чтобы всегда иметь порядок отображения 1?
В Microsoft SQL Server нет LIMIT
...
;WITH cte AS
(
SELECT
BSId, RevisedBSId, VersionNumber,
RANK() OVER (ORDER BY VersionNumber DESC) AS [DisplayOrder]
FROM
cte
),
sortedctethree AS
(
SELECT TOP 3
BSId, RevisedBSId, VersionNumber, DisplayOrder
FROM
sortedcte
)
SELECT *
FROM sortedctethree
Здесь DisplayOrder
не так. Если я использую другой CTE, где я пытаюсь изменить порядок, это все равно неправильно.
Мне нужно только 3 строки. Но в ТОП 3 может быть также одна или две строки в результате. В этом случае мне всегда нужно иметь DisplayOrder
1 для наименьшего VersionNumber.
VersionNumber | DisplayOrder
--------------+--------------
2 | 2
1 | 1
Как можно добиться? Заранее большое спасибо.