Упорядочить по во встроенном представлении

#tsql

#tsql

Вопрос:

Я хотел бы получить 10 лучших данных из таблицы, которые необходимо отсортировать по возрастанию во внешнем запросе. Ниже приведен псевдокод запроса. Какие есть варианты, кроме использования табличных функций?

select * from
(select top 10 tour_date
from tourtable
order by tour_date desc)
order by tour_date asc

Ответ №1:

Ваш запрос в том виде, в каком он написан, должен сработать, вам просто нужно будет указать псевдоним подзапроса:

 select * 
    from (select top 10 tour_date from tourtable order by tour_date desc) t 
    order by tour_date asc 
  

Другой вариант, предполагающий SQL Server 2005 :

 SELECT t.tour_date
    FROM (SELECT tour_date, ROW_NUMBER() OVER(ORDER BY tour_date DESC) AS RowNum
              FROM tourtable) t
    WHERE t.RowNum <= 10
    ORDER BY t.tour_date ASC
  

который также может быть написан с помощью CTE:

 WITH cteRowNum AS (
    SELECT tour_date, ROW_NUMBER() OVER(ORDER BY tour_date DESC) AS RowNum
        FROM tourtable
)
SELECT tour_date
    FROM cteRowNum
    WHERE RowNum <= 10
    ORDER BY tour_date ASC
  

Ответ №2:

Протестировано в контексте, отличном от tsql:

 select * from (select tour_date from tourable order by tour_date desc limit 10) a order by tour_date asc