Программирование >>  Построение запросов sql 

1 ... 30 31 32 [ 33 ] 34 35 36 ... 101


NACHISLFACTCD

ACCOUNTCD

NACHISLSUM

080270

58,10

005488

46,00

136160

18,30

Рис. 3.48. Результат выполнения запроса с сортировкой по убыванию

Можно производить сортировку по нескольким столбцам. Например, требуется вывести значения оплат абонентов с лицевыми счетами 136169, 005488, 443690. Результаты запроса упорядочить по возрастанию номеров лицевых счетов, а затем по значению оплаты. Соответствующий запрос имеет следующий вид:

SELECT AccountCd, PaySum FROM PaySumma

WHERE AccountCd IN (136169,005488,443690) ORDER BY AccountCd, PaySum;.

Результат выполнения запроса представлен на рис. 3.49.

ACCOUNTCD

PAYSUM

005488

46,00

005488

56,00

005488

58,70

005488

62,13

136169

20,00

136169

25,32

136169

28,32

136169

28,32

136169

58,70

443690

17,80

443690

21,67

Рис. 3.49. Результат выполнения запроса с сортировкой по нескольким

столбцам

В списке элементов сортировки для столбцов в ТРЗ с именами и без имен (например, вычисляемых столбцов) можно указывать их порядковый номер в списке возвращаемых элементов предложения SELECT. Примером этому может служить следующий запрос:

SELECT DISTINCT AccountCD, (NachislSum +100) AS

NachislSum 100

FROM NachislSunma

WHERE GazServiceCD =2 AND AccountCD STARTING WITH 1

ORDER BY 2;.



Результат выполнения запроса представлен на рис. 3.50. Здесь сортировка выполняется по значениям вычисляемого столбца (NachislSum+100), который имеет порядковый номер 2 в списке возвращаемых элементов предложения

SELECT.

ACCOUNTCD

NACHISLSUM 100

136160

120,00

136169

120,00

115705

140,00

136160

156,00

115705

158,70

136169

158,70

115705

350,00

Рис. 3.50. Результат выполнения запроса с сортировкой по номеру столбца

В предложении ORDER BY можно указать псевдоним столбца, например NachislSum 100 в предыдущем примере. Результат выполнения будет совпадать с результатом выполнения предыдущего запроса.

Сортировку по номеру элемента в списке можно использовать при выборке всех столбцов из таблицы. Пусть, например, требуется вывести все данные об улицах, отсортированные по названию улиц. Запрос будет выглядеть следующим образом:

SELECT * FROM Street ORDER BY 2;.

Результат выполнения запроса представлен на рис. 3.51.

STREETCD

STREETNM

ВОИКОВ ПЕРЕУЛОК

ГАГАРИНА УЛИЦА

КУТУЗОВА УЛИЦА

МОСКОВСКАЯ УЛИЦА

МОСКОВСКОЕ ШОССЕ УЛИЦА

НОВАЯ УЛИЦА

ТАТАРСКАЯ УЛИЦА

ЦИОЛКОВСКОГО УЛИЦА

Рис. 3.51. Результат выполнения запроса с сортировкой при выборке всех

данных

Примечание. Не рекомендуется в приложениях использовать запросы с сортировкой по номерам столбцов. Это связано с тем, что со временем структура таблицы может измениться, например, в результате добавления или удаления столбцов. Как следствие, запрос с сортировкой по порядковому номеру может дать совсем другую последовательность или вообще вызвать ошибку, ссылаясь на отсутствующий столбец [22].

В качестве элемента сортировки в ORDER BY разрешено также определять выражения. Например, для вывода информации о первых пяти абонентах, имеющих наиболее длинные ФИО, можно использовать следующий запрос:



SELECT FIRST 5 * FROM Abonent ORDER BY CHAR LENGTH(Fio) DESC;.

Результат выполнения запроса представлен на рис. 3.52.

ACCOUNTCD

STREETCD

HOUSENO

FLATNO

PHONE

443069

СТАРОДУБЦЕВ Е.В.

683014

080270

ТИМОШКИНА Н.Г.

321002

443690

ТУЛУПОВА М.И.

214833

080613

ЛУКАШИНА Р.М.

254417

136169

ДЕНИСОВА Е.К.

680305

Рис. 3.52. Результат выполнения запроса с сортировкой по выражению

Функция CHARLENGTH, использованная в данном запросе, возвращает длину поля Fio в символах. В результате выведены данные о 5 абонентах, имеющих наиболее длинное значение поля Fio.

В соответствии с SQL-стандартом существует возможность определить положение NULL-значений в ТРЗ. Результаты могут быть отсортированы таким образом, что NULL будут располагаться выше (NULLS FIRST) или ниже (NULLS LAST) остальных результатов запроса, отличных от NULL. По умолчанию используется NULLS LAST.

Примечание. Если задано NULLS FIRST, то для сортировки не может быть использован индекс (использование индексов будет описано далее).

Например, для вывода номеров и дат выполнения ремонтных заявок, поданных абонентами, номера лицевых счетов которых начинаются с 08 или с 11, отсортированных по убыванию дат выполнения с NULL-значениями вначале можно использовать следующий запрос;

SELECT RequestCd, ExecutionDate, AccountCd

FROM REQUEST

WHERE (AccountCD LIKE 08%) OR (AccountCD LIKE 11%) ORDER BY ExecutionDate DESC NULLS FIRST;.

Результат выполнения запроса представлен на рис. 3.53.

REQUESTCD

EXECUTIONDATE

ACCOUNTCD

<null>

115705

<null>

080270

27.12.2001

080270

11.10.2001

080047

06.09.2001

115705

12.08.2001

115705

24.06.2001

080613

23.09.2000

115705

04.01.2000

115705

24.10.1998

080047



1 ... 30 31 32 [ 33 ] 34 35 36 ... 101

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика