Создание перекрестных запросов

Перекрестные запросы — это запросы, в которых вычисляются статистические данные и определяется их внешний вид. Информация выводится в привычной форме: в виде таблицы. В предложениях Assess SQL для обозначения перекрестного запроса используется ключевое слово transform (transform не является зарезервированным словом ANSI SQL). С помощью рассматриваемого типа запросов можно:

· Указать поле, которое является заголовком строки, используя операцию "Группировка".

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

· Указать место размещения данных в таблице.

Перекрестные запросы обладают следующими достоинствами:

· Возможностью вывода значительного объема данных в компактном и привычном виде.

· Итоговые данные представляется в формате, который идеально подходит для автоматического создания графиков и диаграмм с помощью Мастера диаграмм Access.

· Простота и скорость разработки запросов с несколькими уровнями детализации. Высоко структурированные запросы позволяют, например, посмотреть продажи для конкретного товара, нажав кнопку "Промежуточные итоги".

При использовании перекрестных запросов имеется только одно ограничение: нельзя сортировать таблицу результатов по значениям, содержащимся в столбцах. Таким образом, например, невозможно создать запрос, в котором товары упорядочены в строках по объему продаж: в подавляющем большинстве случаев одновременное упорядочивание данных в столбцах по всем строкам невозможно. Однако можно задать сортировку по возрастанию или по убыванию либо отсутствие упорядочивания для заголовков строк.

Мастер перекрестного запроса Access 97 помогает в создании перекрестных запросов. Однако он имеет одно ограничение: мастер создает перекрестный запрос только на основе одной таблицы или одного запроса. Для большинства баз данных потребуется использовать, по крайней мере, две таблицы. В этом случае для применения Мастера перекрестного запроса необходимо построить запрос, включающий все требуемые таблицы. Опишем создание перекрестного запроса без помощи мастера.

Создание перекрестного запроса "Ежемесячная выручка от продаж"

Для создания перекрестного запроса, в котором в строках выводятся товары, а в столбцах соответствующие им месячные объемы продаж:

1. Создайте новый запрос и добавьте в него таблицы "Товары", "Заказано" и "Заказы".

2. Перетащите поля "КодТовара" и "Название" таблицы "Товары", а затем поле "ДатаРазмещения" таблицы "Заказы" в столбцы бланка запросов.

3. Выберите команду "Запрос, Перекрестный". Заголовок окна запроса 3anpocl: на выборку (Select Query: Query!) изменится на Запрос!: перекрестный запрос (Crosstab Query: Query!). Кроме того, в бланк запроса будет добавлена строка "Перекрестная таблица".

Выберите в списке ячейки "Перекрестная таблица" столбца "КодТовара" значение "Заголовки строк". Выполните то же самое для столбца "Название". Эти столбцы являются требуемыми заголовками строк перекрестной таблицы.

5. Выберите в списке ячейки "Групповая операция" столбца "КодТовара" значение "Условие". В ячейке "Условие отбора" () этого столбца введите выражение Like "*/*/08" для вывода в перекрестной таблице данных за каждый месяц 2008 года.

6. Установите курсор в ячейку "Поле" следующего (пустого) столбца и введите следующее выражение:

Объем продаж: Sum ([Заказано]. [Количество] * [Заказано] . [Цена])

Выберите в ячейке "Групповая операция" того же столбца значение "Выражение", а затем в ячейке "Перекрестная таблица" значение "Значение". В столбце "Объем продаж" вычисляется общий объем заказов на каждый товар, который подставляется в ячейки перекрестной таблицы. Ссылка на таблицу "Заказано" обязательна, иначе будет выдано сообщение об ошибке "Неоднозначная ссылка на поле".

7. Установите курсор в ячейку "Поле" следующего (пустого) столбца и введите выражение Format([ДатаРазмещения]; "mmm"). Access добавляет имя поля "Выражение!", применяемое по умолчанию. Не меняйте его, т. к. функция Format () создает при запуске запроса имена столбцов, состоящие из трех первых букв названия месяца (формат "mmm")- Выберите из списка в ячейке "Перекрестная таблица" значение "Заголовки столбцов" Обратите внимание на то, что выведенная перекрестная таблица обладает одним немаловажным недостатком: расположение столбцов определяется алфавитным порядком их заголовков, а не хронологической очередностью. В этом случае требуется использовать фиксированные заголовки столбцов.