ВЫБРАТЬ В ЗАПРОСЕ ОДНУ ЗАПИСЬ ИЗ НЕСКОЛЬКИХ

http://www.forum.mista.ru/topic.php?id=764178

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

Ф  К1  К2  К3  К4
 Петя 1 1 1 1
Петя 2 0 0 0
Петя 3 0 0 0
Вася 5 5 5 5
Женя 4 4 4 4

 

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

Ф  К1  К2  К3  К4
 Петя 1 1 1 1
Вася 5 5 5 5
Женя 4 4 4 4

 

Несмотря на простоту формлировки, у задачи нет простого решения, если только не использовать коррелированный запрос. С использованием коррелированного запроса решение получается очень простым:
ВЫБРАТЬ РАЗЛИЧНЫЕ Ф, К1, К2, К3, К4
ИЗ Дано
ГДЕ (Ф, К1, К2, К3, К4)
В (ВЫБРАТЬ ПЕРВЫЕ 1 * ИЗ Дано КАК ВСЁ ГДЕ ВСЁ.Ф = Дано.Ф)
При использовании коррелированных запросов нельзя забывать о подводных камнях этого механизма, в частности о том, что он может служить причиной падения производительности запроса. Кроме того, в некоторых версиях файлового варианта условие ГДЕ из-за ошибки платформы 8.2 не срабатывает.