Выбрать в запросе одну запись из нескольких

FastCode 63 8

Имеется таблица, содержащая, например, колонки Ф, К1, К2, К3, К4. Для каждого значения Ф в таблице может быть несколько записей.

t4.png

Требуется получить таблицу, включающую по одной (любой) записи для каждого значения Ф.

t5.png

Несмотря на простоту формулировки, у задачи нет простого решения, если только не использовать коррелированный запрос. С использованием коррелированного запроса решение получается очень простым:

ВЫБРАТЬ РАЗЛИЧНЫЕ Ф, К1, К2, К3, К4
ИЗ Дано
ГДЕ (Ф, К1, К2, К3, К4) 
В (ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ Дано КАК ВСЁ ГДЕ ВСЁ.Ф = Дано.Ф)

При использовании коррелированных запросов нельзя забывать о подводных камнях этого механизма, в частности о том, что он может служить причиной падения производительности запроса. Кроме того, в некоторых версиях файлового варианта условие ГДЕ из-за ошибки платформы 8.2 не срабатывает.

Автор: ildarovich

FastCode Professional - быстрый поиск кода 1С

Похожие публикации

Срез на даты за период. Шаблон запроса

Остатки на каждый день

Движения периодического регистра сведений без повторов

Ограничение, одним видом документов, запроса из регистра

Модератору