WHERE КодКлиента = 21 );
В данном случае подзапрос выведет только одно значение 11, но в принципе может быть много подобных значений, и тогда DISTINCT выберет только одно.
Один тип функций, который автоматически может производить одиночное значение для любого числа строк – агрегатная функция, ее и можно использовать в подзапросе.
Для того чтобы увидеть все заказы, имеющие сумму приобретений выше средней на 4–е октября, нужно создать два запроса:
1. Запрос СРЕДНЯЯ СУММА ПОКУПКИ, вычисляющий среднюю сумму покупок:
SELECT Avg(Заказы.СуммаПокупки) AS СуммаПокупки
FROM Заказы;
2. На основе предыдущего запроса создать запрос, сравнивающий суммы покупок на 4 октября со средней суммой всех приобретений.
SELECT Заказы.ДатаПокупки, Заказы.СуммаПокупки
FROM Заказы, [Средняя сумма покупки]
WHERE (((Заказы.ДатаПокупки)=’10.04.2008’) AND ((Заказы.СуммаПокупки)>[Средняя сумма покупки]![СуммаПокупки]));
Вы можете использовать подзапросы, которые производят любое число строк, если вы используете специальный оператор IN. Когда вы используете IN с подзапросом, SQL просто формирует набор значений для IN из вывода подзапроса.
Пример: показать все заказы для продавцов, находящихся в Лондоне.
SELECT * FROM Заказы
WHERE КодПродавца IN
(SELECT КодПродавца