|
Как правильно соединить таблицы? | ☑ | ||
---|---|---|---|---|
0
Вася Теркин
02.12.14
✎
07:26
|
Мне надо выбрать Регистратор, в котором за период цена была минимальной по указанному счету в указанный период
|
|||
1
Вася Теркин
02.12.14
✎
07:28
|
Просто найти минимальную и максимальную цену не сложно
ВЫБРАТЬ РАЗЛИЧНЫЕ Типовой.Ссылка ПОМЕСТИТЬ СписокСчетов ИЗ ПланСчетов.Типовой КАК Типовой ГДЕ Типовой.ВидыСубконто.ВидСубконто = &ВидСубконто ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Обороты.СчетДт КАК Счет, Обороты.СубконтоДт1 КАК Номенклатура, Номенклатура.Код КАК Номер, Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдИзм, Обороты.КоличествоОборотДт КАК Количество, Обороты.СредняяЦена, МинимальнаяЦена.Цена КАК ЦенаМин, МаксимальнаяЦена.Цена КАК ЦенаМакс, Обороты.СуммаОборот КАК Сумма ИЗ (ВЫБРАТЬ СУММА(ТиповойОбороты.СуммаОборотДт) КАК СуммаОборот, СУММА(ТиповойОбороты.КоличествоОборотДт) КАК КоличествоОборотДт, ТиповойОбороты.Субконто1 КАК СубконтоДт1, ТиповойОбороты.Счет КАК СчетДт, СУММА(ВЫБОР КОГДА ТиповойОбороты.КоличествоОборотДт = 0 ТОГДА 0 ИНАЧЕ ТиповойОбороты.СуммаОборотДт / ТиповойОбороты.КоличествоОборотДт КОНЕЦ) КАК СредняяЦена ИЗ РегистрБухгалтерии.Типовой.Обороты(&НачалоПериода, &КонецПериода, Период, , , , КорСчет = &СчетКт, ) КАК ТиповойОбороты ЛЕВОЕ СОЕДИНЕНИЕ СписокСчетов КАК СписокСчетов ПО ТиповойОбороты.Счет = СписокСчетов.Ссылка ГДЕ СписокСчетов.Ссылка <> &ПустойСчет СГРУППИРОВАТЬ ПО ТиповойОбороты.Счет, ТиповойОбороты.Субконто1) КАК Обороты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ТиповойОборотыДтКт.Счет КАК СчетДт, ТиповойОборотыДтКт.Субконто1 КАК СубконтоДт1, СУММА(ТиповойОборотыДтКт.СуммаОборотДт) КАК СуммаОборот, СУММА(ТиповойОборотыДтКт.КоличествоОборотДт) КАК КоличествоОборотДт, МИНИМУМ(ТиповойОборотыДтКт.СуммаОборот / ТиповойОборотыДтКт.КоличествоОборотДт) КАК Цена ИЗ РегистрБухгалтерии.Типовой.Обороты(&НачалоПериода, &КонецПериода, Регистратор, , , , КорСчет = &СчетКт, ) КАК ТиповойОборотыДтКт ЛЕВОЕ СОЕДИНЕНИЕ СписокСчетов КАК СписокСчетов ПО ТиповойОборотыДтКт.Счет = СписокСчетов.Ссылка ГДЕ СписокСчетов.Ссылка <> &ПустойСчет И ТиповойОборотыДтКт.КоличествоОборотДт > 0 СГРУППИРОВАТЬ ПО ТиповойОборотыДтКт.Субконто1, ТиповойОборотыДтКт.Счет) КАК МинимальнаяЦена ПО Обороты.СчетДт = МинимальнаяЦена.СчетДт И Обороты.СубконтоДт1 = МинимальнаяЦена.СубконтоДт1 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ТиповойОборотыДтКт.Счет КАК СчетДт, ТиповойОборотыДтКт.Субконто1 КАК СубконтоДт1, СУММА(ТиповойОборотыДтКт.СуммаОборотДт) КАК СуммаОборот, СУММА(ТиповойОборотыДтКт.КоличествоОборотДт) КАК КоличествоОборотДт, МАКСИМУМ(ТиповойОборотыДтКт.СуммаОборот / ТиповойОборотыДтКт.КоличествоОборотДт) КАК Цена ИЗ РегистрБухгалтерии.Типовой.Обороты(&НачалоПериода, &КонецПериода, Регистратор, , , , КорСчет = &СчетКт, ) КАК ТиповойОборотыДтКт ЛЕВОЕ СОЕДИНЕНИЕ СписокСчетов КАК СписокСчетов ПО ТиповойОборотыДтКт.Счет = СписокСчетов.Ссылка ГДЕ СписокСчетов.Ссылка <> &ПустойСчет И ТиповойОборотыДтКт.КоличествоОборотДт > 0 СГРУППИРОВАТЬ ПО ТиповойОборотыДтКт.Субконто1, ТиповойОборотыДтКт.Счет) КАК МаксимальнаяЦена ПО Обороты.СчетДт = МаксимальнаяЦена.СчетДт И Обороты.СубконтоДт1 = МаксимальнаяЦена.СубконтоДт1 ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура ПО Обороты.СубконтоДт1 = Номенклатура.Ссылка ГДЕ Обороты.СубконтоДт1 В ИЕРАРХИИ(&Номенклатура) И Обороты.СчетДт В ИЕРАРХИИ(&Счет) |
|||
2
Вася Теркин
02.12.14
✎
07:29
|
А вот именно регистратор вытащить МИНИМУМ и МАКСИМУМ нельзя прямо использовать. Надо как-то соединить результат соединять с самим собой:
ВЫБРАТЬ ТиповойОбороты.Счет, ТиповойОбороты.Субконто1, ТиповойОбороты.КорСубконто1, СУММА(ТиповойОбороты.СуммаОборотДт) КАК СуммаДт, СУММА(ТиповойОбороты.КоличествоОборотДт) КАК Количество, СУММА(ТиповойОбороты.СуммаОборотДт) КАК Сумма, СУММА(ТиповойОбороты.СуммаОборотДт / ТиповойОбороты.КоличествоОборотДт) КАК Цена, ТиповойОбороты.Регистратор ПОМЕСТИТЬ Приходы ИЗ РегистрБухгалтерии.Типовой.Обороты(, , Регистратор, , , Субконто1 В (&Номенклатура), КорСчет = &СчетКт, ) КАК ТиповойОбороты ГДЕ ТиповойОбороты.Счет = &Счет СГРУППИРОВАТЬ ПО ТиповойОбороты.Счет, ТиповойОбороты.Субконто1, ТиповойОбороты.КорСубконто1, ТиповойОбороты.Регистратор ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т1.Субконто1, Т2.Цена, Т2.Регистратор ИЗ Приходы КАК Т1 ЛЕВОЕ СОЕДИНЕНИЕ Приходы КАК Т2 ПО Т1.Субконто1 = Т2.Субконто1 И (Т1.Регистратор В (ВЫБРАТЬ ПЕРВЫЕ 1 Отбор.Регистратор ИЗ Приходы КАК Отбор ГДЕ Отбор.Счет = Т1.Счет И Отбор.Субконто1 = Т1.Субконто1 И МИНИМУМ(Отбор.Цена) = Т1.Цена УПОРЯДОЧИТЬ ПО Отбор.Субконто1 УБЫВ)) |
|||
3
Вася Теркин
02.12.14
✎
07:30
|
Но так нельзя писать.
|
|||
4
Вася Теркин
02.12.14
✎
07:36
|
Нужно пример в (2) сделать под сабж. И пока не очень ясно как лучше быть...
|
|||
5
dk
02.12.14
✎
08:28
|
приведи пример
есть таблица вида ... нужно получить таблицу вида ... ----- если товаров несколько, то и регистраторов может быть несколько по каждому товару или максимум без учета товаров? |
|||
6
13_Mult
02.12.14
✎
08:32
|
(0) так подойдет ))
ВЫБРАТЬ ПЕРВЫЕ 1 ХозрасчетныйОбороты.Регистратор КАК Регистатор, МИНИМУМ(ХозрасчетныйОбороты.СуммаОборот) КАК СуммаОборот ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, Счет = &Счет, , , , ) КАК ХозрасчетныйОбороты СГРУППИРОВАТЬ ПО ХозрасчетныйОбороты.Регистратор УПОРЯДОЧИТЬ ПО СуммаОборот |
|||
7
Вася Теркин
02.12.14
✎
08:52
|
Товары Цены Регистратор
Товар1 1232 "34" Товар1 1342 "54" Товар1 1132 "43" Товар2 546 "34" Товар2 453 "23" Нужно получить Товар МинЦена РегистраторМин МаксЦена РегистраторМакс Товар1 1132 "43" 1342 "54" Товар2 453 "23" 546 "34" Регистраторы будут ссылочные, из них дальнейшаяч расшифровка, но не в этом суть.... |
|||
8
Вася Теркин
02.12.14
✎
08:54
|
(6) Нет. Надо подвязать РЕГИСТРАТОР из которого минимум идет. Так я сам могу...
|
|||
9
Вася Теркин
02.12.14
✎
08:54
|
(6) Разве минимум будет в разрезе товаров а не в разрезе каждого регистратора?
|
|||
10
Вася Теркин
02.12.14
✎
08:55
|
Минимум нужно с группировкой по Товарам, а не по Регистратору.
|
|||
11
dk
02.12.14
✎
09:07
|
выбрать
товар ,Цена ,максимум(регистратор) <- чтобы от дублей избавиться Из таблица Внутреннее соединение (выбрать товар , Минимум(Цена) Цена из таблица ) влож по Цена = Цена и товар = товар --- получишь с минимальными ценами |
|||
12
Вася Теркин
02.12.14
✎
09:27
|
(11) Спасибо, сейчас попробую.
|
|||
13
КонецЦикла
02.12.14
✎
09:33
|
(8) Их несколько может быть
|
|||
14
Вася Теркин
02.12.14
✎
09:52
|
Теперь примерно понятна идея
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |