Поделиться через


Сортировка строк

Строки в результатах запроса можно сортировать.То есть можно указать конкретный столбец или набор столбцов, значениями которых определяется порядок строк в результирующем наборе.

ПримечаниеПримечание

Порядок сортировки частично определяется параметрами сортировки столбца.Можно изменить порядок сортировки в Диалоговое окно "Параметры сортировки".

Существует несколько способов сортировки результатов запроса:

  • Можно упорядочивать строки по возрастанию или по убыванию   По умолчанию SQL использует столбцы, по которым ведется упорядочение, для расположения строк в возрастающем порядке.Например, чтобы упорядочить наименования книг в порядке возрастания цен, достаточно отсортировать строки по столбцу цен.Конечный код SQL может выглядеть следующим образом:

    SELECT *
    FROM titles
    ORDER BY price
    

    С другой стороны, если нужно сортировать названия книг так, чтобы в начале списка были расположены самые дорогие, можно явно указать порядок, в котором первым располагается элемент с самым высоким значением.То есть указать, что строки результата должны быть упорядочены по убыванию значений в столбце цен.Конечный код SQL может выглядеть следующим образом:

    SELECT *
    FROM titles
    ORDER BY price DESC
    
  • Можно сортировать по нескольким столбцам   Например, можно создать результирующий набор, содержащий по одной строке для каждого автора, упорядоченный сначала по штату, затем по городу.Конечный код SQL может выглядеть следующим образом:

    SELECT *
    FROM authors 
    ORDER BY state, city
    
  • Можно сортировать по столбцам, не отображаемым в наборе результатов   Например можно создать результирующий набор, в начале которого размещены самые дорогостоящие книги, хотя столбец цен при этом не отображается.Конечный код SQL может выглядеть следующим образом:

    SELECT title_id, title
    FROM titles
    ORDER BY price DESC
    
  • Можно сортировать по производным столбцам   Например, можно создать результирующий набор, каждая строка которого содержит наименование книги, причем первыми будут перечислены книги, авторы которых получают самый большой процент отчислений с проданного экземпляра.Конечный код SQL может выглядеть следующим образом:

    SELECT title, price * royalty / 100 as royalty_per_unit
    FROM titles
    ORDER BY royalty_per_unit DESC
    

    (Формула для вычисления авторского гонорара с проданного экземпляра каждой книги выделена).

    Чтобы вычислить производный столбец, можно использовать синтаксис SQL, как в предыдущем примере, или определяемую пользователем функцию, которая возвращает скалярное значение.Дополнительные сведения об определяемых пользователем функциях см. в документации по SQL Server.

  • Можно сортировать сгруппированные строки   Например, можно создать результирующий набор, в каждой строке которого описывается какой-либо город и указывается количество авторов из этого города, причем первыми перечисляются города с большим числом авторов.Конечный код SQL может выглядеть следующим образом:

    SELECT city, state, COUNT(*)
    FROM authors
    GROUP BY city, state
    ORDER BY COUNT(*) DESC, state 
    

    Обратите внимание на то, что в запросе используется state в качестве второстепенного столбца сортировки.Таким образом, если в двух штатах имеется одинаковое количество авторов, эти штаты располагаются в алфавитном порядке.

  • Можно сортировать с использованием данных в разных языковых форматах   То есть можно сортировать столбец, используя соглашения о порядке сортировки, отличные от соглашений по умолчанию, применяемых для этого столбца.Например, можно составить запрос, получающий наименования всех книг, автором которых является Jaime Patiño.Чтобы отобразить наименования в алфавитном порядке, для столбца наименований используется испанская схема упорядочения.Конечный код SQL может выглядеть следующим образом:

    SELECT title
    FROM 
        authors 
        INNER JOIN 
            titleauthor 
            ON authors.au_id 
            =  titleauthor.au_id 
            INNER JOIN
                titles 
                ON titleauthor.title_id 
                =  titles.title_id 
    WHERE 
         au_fname = 'Jaime' AND 
         au_lname = 'Patiño'
    ORDER BY 
         title COLLATE SQL_Spanish_Pref_CP1_CI_AS
    

Дополнительные сведения см. в разделе Практическое руководство: использование конструктора запросов и представлений с данными в международном формате.Дополнительные сведения о результатах сортировки см. в разделе Сортировка и группировка результатов запроса.

См. также

Другие ресурсы

Сортировка и группировка результатов запроса

Конструирование запросов и представлений