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

FastCode 1516 12 22 67

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

t4.png

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

t5.png

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

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

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

Автор: ildarovich

0

См. также

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

ВыбратьИсполнителя (БСП)

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

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

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

ПеренаправитьЗадачи (БСП)

ДобавитьФайлы (БСП)

ОбновитьНаборыЗаписей (БСП)

ДобавитьЗаписьВРегистрСведений (БСП)

Модератору