Создание перекрестного запроса с помощью мастера

Легче всего построить перекрестный запрос с помощью мастера создания перекрестного запроса. Если вы хотите сделать это самостоятельно, выполните следующие действия, поль­зуясь БД AdventureWorks.

1. Если нужно собрать информацию из связанных таблиц, начните с создания запроса с объединением (join query).

В данном примере используется уже созданный запрос Orderedltemс объединением таблиц, заимствующий массу данных о компонентах заказов, соответствующих товарах, клиентах, месте их проживания и т. д. Дополнительные сведения, необходимые для са­мостоятельного создания запроса с объединением, см. в разд. "Запросы и связанные таб­лицы" главы 6.

Если вы считаете, что можете получить все необходимое из одной таблицы, пропустите этот пункт.

2. Выберите на ленте Создание → Другие → Мастер запросов(Create Other Query Wizard).

Теперь начинает действовать чудесный мастер. На экране появляется окно Создание за­проса(New Query) со списком запросов разных типов, которые может создать мастер.

3. Выберите Перекрестный запрос(Crosstab Query Wizard) и щелкните мышью кнопку ОК.

Сначала мастер попросит выбрать таблицу или запрос (рис. 9.4). Выберите один из пере­ключателей в области Показать(View).

4. Выберите нужную таблицу. Если хотите выбрать запрос, щелкните кнопкой мыши переключатель Запросы,а затем выберите ваш запрос. Щелкните мышью кнопку Далее.

В данном примере следует щелкнуть мышью переключатель Запросыи затем выбрать запрос OrderedItems.

На следующем этапе нужно задать критерии группировки, которые будут применяться для объединения данных в строки (рис. 9.5).


 
 

 
 

Рис. 9.4. Для просмотра таблиц вашей БД щелкните кнопкой мыши переключатель Таблицы,а для просмотра запросов — Запросы

 

Рис. 9.5.Для применения поля в качестве заголовка строки выберите его в списке Доступные поляи затем щелкните мышью забавную кнопку > для переноса поля в список Выбранные поля


Если создается простой двухуровневый перекрестный запрос, выберите один критерий для строк и один для столбцов (на следующем шаге). Но есть возможность задать до трех уровней группировки строк. Этот вариант больше всего подходит для разных уровней, связанных между собой. Например, вы можете выбрать группировку по стране прожива­ния клиента, в каждой стране подгруппу для городов и в каждом городе подгруппу на ос­нове идентификационного номера (ГО) клиента. Пример хорошо сгруппированного пе­рекрестного запроса см. на рис. 9.2.

5. Включите поля, которые хотите использовать, в список Выбранные поляи затем щелк­ните мышью кнопку Далее.

 
 

В примере с запросом Orderedltemsстроки группируются по полю State Province.После того как вы опробуете свой запрос, группировку можно легко изменить в окне Конструктора.Например, если хотите, можно поменять поле StateProvinceна поле Country.Как изменить перекрестный запрос, рассказывается в разд. "Создание перекрестного за­проса с нуля " далее в этой главе.

Теперь следует задать критерий группировки, применяемый для разделения ваших строк на столбцы (рис. 9.6). В этот момент можно выбрать одно поле.

 

Рис. 9.6. По мере выполнения мастера программа Access выводит в нижней части его окна мини-окно предварительного просмотра структуры вашего находящегося в процессе создания перекрестного запроса. В данном примере строки группируются по полю StateProvince,а столбцы — по полю ProductCategory

6. Выберите поле для группировки столбцов и щелкните мышью кнопку Далее. В данном примере это поле ProductCategory.

На последнем шаге вы должны подобрать вычисление, которое хотите выполнять для получения итогов.


 
 

Выберите поле для вычисления и затем функцию для подсчета сводных данных (рис. 9.7). Например, можно найти самую дешевую продажу, заказ с наибольшим числом продан­ных товаров, среднюю цену товара и т. д. В данном примере для подсчета количества проданных товаров используется поле OrderQty.

 

Рис. 9.7. В этом примере функция Sum суммирует значения поля OrderQtyиз всех записей. Например, данный запрос сообщает о том, что вы продали в целом 53 товара из категории Bike (велосипеды) клиентам из Алабамы. Если нужно посчитать, сколько заказов сделали ваши клиенты (вместо количества доставленных товаров), необходим немного другой запрос — в этом случае следует использовать функцию Count для подсчета различных значений поля SalesOrderID