Сортировка строк
Строки в результатах запроса можно сортировать. То есть можно указать конкретный столбец или набор столбцов, значениями которых определяется порядок строк в результирующем наборе.
Примечание
Порядок сортировки частично определяется параметрами сортировки столбца.Можно изменить порядок сортировки в Диалоговое окно "Параметры сортировки".
Существует несколько способов сортировки результатов запроса:
Можно упорядочивать строки по возрастанию или по убыванию По умолчанию 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
Дополнительные сведения см. в разделе Практическое руководство: использование конструктора запросов и представлений с данными в международном формате. Дополнительные сведения о результатах сортировки см. в разделе Сортировка и группировка результатов запроса.