Когда используется директива «ИМЕЮЩИЕ» в языке запросов 1С? (1С: Программисту: Язык запросов: «ИМЕЮЩИЕ»)

Вопрос Когда используется директива «ИМЕЮЩИЕ» в языке запросов 1С?
Ответ
Отличие директивы «ИМЕЮЩИЕ» от условия «ГДЕ» состоит в том, что ее можно использовать для агрегатных функций. Обязательным условием при этом является использование группировки по остальным полям.
Пример:

ВЫБРАТЬ
    тбЗадания.Задание,
    СУММА(тбЗадания.КоличествоИсполнителей)  КАК КоличествоИсполнителей
ИЗ
    РегистрСведений.устВыполняемыеЗадания КАК тбЗадания
ГДЕ
    тбЗадания.Выполнение
СГРУППИРОВАТЬ ПО
    тбЗадания.Задание
ИМЕЮЩИЕ
    СУММА(тбЗадания.КоличествоИсполнителей)  > 0

При этом есть одна особенность. Не смотря на то, что аналогичная директива на языке запросов SQL (HAVING) позволяет указать псевдоним поля, на языке запросов 1С псевдоним поля указать нельзя. Т.е. в конце нельзя написать: «ИМЕЮЩИЕ КоличествоИсполнителей > 0», — это будет неправильно, нужно полностью продублировать всю функцию (в нашем случае «СУММА(тбЗадания.КоличествоИсполнителей)»)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.