Инструкция TRANSFORM используется для создания перекрестного запроса. Данные, представленные с помощью перекрестного запроса, изображаются в более компактном виде, чем с помощью запроса-выборки. Синтаксис:
TRANSFORM Функция
SELECT …;
PIVOT поле;
Функция - групповая функция SQL, обрабатывающая данные ячейки таблицы
Поле - поле или выражение, значения из которого становятся заголов- ками столбцов.
Запрос в режиме таблицы имеет столько столбцов, сколько различных значений принимает поле. Например, если поле выдает названия месяцев, то получится до 12 столбцов, заголовки которых упорядочены по возрастанию (Август, Апрель…Январь). После аргумента поле можно поместить предложение IN(список_значений). Фиксированные значения в списке_значений разделяются запятыми. При наличии предложения IN каждое значение поля сравнивается со значениями в списке_значений. При совпадении в соответствующем столбце выводится результат вычисления функции. Фиксированные заголовки, которым не соответствуют реальные данные, можно использовать для создания дополнительных столбцов.
Использование предложения PIVOT эквивалентно определению свойства “Заголовки столбцов” в бланке свойств конструктора запросов.
Пример(запрос10)
Результат выполнения может иметь, например, такой вид:
Столбцы “Группа” и “Всего” сформированы инструкцией SELECT, включающей в себя предложения WHERE, FROM, GROUP BY и ORDER BY. Заголовки остальных столбцов определены предложением PIVOT, а значения в ячейках этих столбцов формирует функция Count из предложения TRANSFORM.
В функции DatePart первый аргумент указывает, какую часть нужно извлечь из даты, представленной вторым аргументом. Признак “q” предписывает извлечь из даты номер квартала 1,2,3 или 4. Оператор сцепления строк ”&” соединяет текст “кв.“ с номером квартала. Результат сравнивается с текстами из предложения IN. При успехе сравнения в соответствующий столбец заносится результат вычисления функции из предложения TRANSFORM.
UNION
Операция UNIONпозволяет получить запрос-объединение, являющийся объединением двух или более таблиц или запросов. В простейшем случае объединение имеет формат:
Запрос1 UNION Запрос2
ЗапросN -имя сохраненного запроса или инструкция SQL. В объединении может участвовать таблица, перед именем которой стоит зарезервированное слово TABLE.
В следующем примере объединяется таблица “Новые преподаватели” и результат выполнения инструкции SQL.
TABLE [Новые преподаватели]
UNION SELECT * FROM Преподаватели;
Предполагается, что таблицы “Новые преподаватели” и “Преподаватели” имеют одинаковое число полей, а инструкция SELECT с помощью звездочки отбирает все поля таблицы “Преподаватели”.
По умолчанию при использовании операции UNION повторяющиеся записи не включаются в результирующее множество. Включение всех записей можно обеспечить, если после слова UNION поместить предикат ALL. Такой запрос выполняется быстрее.
Все запросы и таблицы, включенные в операцию UNION должны иметь одинаковое число полей. Имена полей в результирующем наборе берутся из первого аргумента (Запрос1).
В конец каждого аргумента ЗапросN можно включить предложение GROUP BY или HAVING, чтобы сгруппировать и отфильтровать возвращаемые записи. В конец последнего аргумента ЗапросN можно включить предложение ORDER BY, чтобы упорядочить возвращенные записи.