Имя: Пароль:
1C
1С v8
Запрос с подзапросом на каждое значение
0 Solely
 
02.12.13
19:15
"ВЫБРАТЬ
    |    Форма_В_5.Объем1 КАК Объем100,
    |    Форма_В_5.Объем2 КАК Объем,
    |    Форма_В_5.Дата,
        |
    |ИЗ
    |    Документ.Форма_В_5 КАК Форма_В_5
    |ГДЕ
    |    Форма_В_5.Дата МЕЖДУ &НачалоПериода И &КонецПериода";

хочу(перебор) на КАЖДОЕ значение выбранной даты, выбрать top1 значения с другой таблицы и прилепить к этой таблице join'ом. Подскаждите примером.
1 Fragster
 
модератор
02.12.13
19:21
ВЫБРАТЬ
    1 КАК Период,
    "А" КАК Значение
ПОМЕСТИТЬ Данные

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    2,
    "Б"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    4,
    "А"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    9,
    "Б"
;

////////////////////////////////////////////////////////////////////////////////


ВЫБРАТЬ
    Данные.Период,
    Данные.Значение,
    ДанныеПредыдущие.Период КАК Период1,
    ДанныеПредыдущие.Значение КАК Значение1
ИЗ
    Данные КАК Данные
        ЛЕВОЕ СОЕДИНЕНИЕ Данные КАК ДанныеПредыдущие
        ПО Данные.Значение = ДанныеПредыдущие.Значение
            И (ДанныеПредыдущие.Период В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    ДанныеУсловие.Период
                ИЗ
                    Данные КАК ДанныеУсловие
                ГДЕ
                    ДанныеУсловие.Значение = Данные.Значение
                    И ДанныеУсловие.Период < Данные.Период
                УПОРЯДОЧИТЬ ПО
                    ДанныеУсловие.Период УБЫВ))
2 Fragster
 
модератор
02.12.13
19:21
только тормозит
3 GANR
 
02.12.13
19:32
(1) Ух ты - а я думал "как же в 1С сделать аналог CROSS APPLY?".
4 GANR
 
02.12.13
19:33
+(3) Жаль только, что конструктор не хочет открывать запрос в условии соединения.
5 Fragster
 
модератор
02.12.13
19:39
еще в ГДЕ также можно, и там вроде как конструктор работает
6 GANR
 
03.12.13
09:11
(5) Едва ли даст конструктор выбрать в качестве параметра поля "верхнего" запроса. Не предусмотрено это, имхо, как и коррелированные подзапросы.
7 Maxus43
 
03.12.13
09:28
(6) СКД при связи наборов данных даёт использовать поля одного как параметры другого
Программист всегда исправляет последнюю ошибку.