Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
ВЫБРАТЬ
Визит.СуммаОбщая КАК СуммаОбщая,
Продажа.СуммаДокумента КАК СуммаДокумента,
ВЫРАЗИТЬ (СУММА(Визит.СуммаОбщая)+СУММА(Продажа.СуммаДокумента)) КАК СуммаПродажи
ИЗ
Документ.Продажа КАК Продажа,
Документ.Визит КАК Визит
ГДЕ
Визит.Организация = &Организация
И Продажа.Организация = &Организация
И Визит.Дата МЕЖДУ &ДатаНач И &ДатаКон
И Продажа.Дата МЕЖДУ &ДатаНач И &ДатаКон
ПоказатьВыдает ошибку {Форма.Форма.Форма(773)}: Ошибка при вызове метода контекста (Выполнить): {(4, 65)}: Ожидается выражение "КАК"
ВЫРАЗИТЬ (СУММА(Визит.СуммаОбщая)+СУММА(Продажа.СуммаДокумента)<<?>>) КАК СуммаПродажи
А всего то нужно сложить суммы двух разных документов и разделить на количество пройденного периода. Не подскажите в чем проблема?
По теме из базы знаний
- Структура иерархического справочника запросом
- Неоптимальности вида «план исполнения запроса "испортился"» - поиск и исправление
- Планы запросов - это просто! Разбор оптимизаций запросов PostgreSQL на живых примерах
- Распространенные ошибки разработчиков, приводящие к проблемам производительности
- Экспертный взгляд на оптимизацию производительности на примере исправления и декомпозиции запроса
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) progaoff, а это что - не заработало?
ВЫБРАТЬ
Визит.СуммаОбщая КАК СуммаОбщая,
Продажа.СуммаДокумента КАК СуммаДокумента,
Визит.СуммаОбщая + Продажа.СуммаДокумента КАК СуммаПродажи
ИЗ
Документ.Продажа КАК Продажа,
Документ.Визит КАК Визит
ГДЕ
Визит.Организация = &Организация
И Продажа.Организация = &Организация
И Визит.Дата МЕЖДУ &ДатаНач И &ДатаКон
И Продажа.Дата МЕЖДУ &ДатаНач И &ДатаКон
Показать
(8) а условия связи точно прописать не надо? ато соединили все документы Продажи со всеми документами Визит (подходящими под указанные условия).
Посмотрите результат развернутый до документов - все ли в детальных записях устраивает, по-мойму там будут задвоения, затроения и т.д.
Посмотрите результат развернутый до документов - все ли в детальных записях устраивает, по-мойму там будут задвоения, затроения и т.д.
как-то так:
а вообще лучше завести регистр накопления с продажами и уже из него получать информацию
ВЫБРАТЬ
СУММА(Продажи.СуммаПродажи) КАК СуммаПродажи
ИЗ
(ВЫБРАТЬ
Продажи.СуммаДокумента КАК СуммаПродажи
ИЗ
&Продажи КАК Продажи
ГДЕ
Продажи.Организация = &Организация
И Продажа.Дата МЕЖДУ &ДатаНач И &ДатаКон
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Визит.СуммаОбщая
ИЗ
&Визит КАК Визит
ГДЕ
Визит.Организация = &Организация
И Визит.Дата МЕЖДУ &ДатаНач И &ДатаКон) КАК Продажи
Показатьа вообще лучше завести регистр накопления с продажами и уже из него получать информацию
ВЫБРАТЬ
ВыполнениеРаботПоВизитуОбороты.СуммаОборот,
ПродажиОбороты.СуммаОборот КАК СуммаОборот1
ИЗ
РегистрНакопления.ВыполнениеРаботПоВизиту.Обороты(&ДатаНач, &ДатаКон, , Организация = &Организация) КАК ВыполнениеРаботПоВизитуОбороты,
РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, , Организация = &Организация) КАК ПродажиОбороты
ГДЕ
ПродажиОбороты.Организация = &Организация
И ВыполнениеРаботПоВизитуОбороты.Организация = &Организация
ПоказатьПустая таблица
вы неправильно делаете опять, почему сразу выбираете из двух таблиц? делайте через Объединить, как было в примере выше.
В такой конструкции как у вас получится соединение результатов обоих таблиц каждого с каждым, т.е. если в таблице1 запись с суммой 10 и запись с суммой 20, а в таблице2 запись с суммой 1 и запись с суммой 2, то в результате вашего запроса получится 4 строки:
10 1
10 2
20 1
20 2
А если писать запрос с объединением двух таблиц, то получится:
10
20
1
2
В такой конструкции как у вас получится соединение результатов обоих таблиц каждого с каждым, т.е. если в таблице1 запись с суммой 10 и запись с суммой 20, а в таблице2 запись с суммой 1 и запись с суммой 2, то в результате вашего запроса получится 4 строки:
10 1
10 2
20 1
20 2
А если писать запрос с объединением двух таблиц, то получится:
10
20
1
2
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.УслугаСумма) КАК УслугаСумма
ИЗ
(ВЫБРАТЬ
ДанныеДляНачисленияЗП.МатериалСуммаПродажи КАК СуммаПродажи
ИЗ
&МатериалСуммаПродажи КАК Продажи
ГДЕ
ДанныеДляНачисленияЗП.Организация = &Организация
И ДанныеДляНачисленияЗП.Дата МЕЖДУ &ДатаНач И &ДатаКон
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ДанныеДляНачисленияЗП.УслугаСумма
ИЗ
&УслугаСумма КАК ДанныеДляНачисленияЗП.УслугаСумма
ГДЕ
ДанныеДляНачисленияЗП.УслугаСумма = &Организация
И ДанныеДляНачисленияЗП.УслугаСумма МЕЖДУ &ДатаНач И &ДатаКон) КАК Продажи
СУММА(ДанныеДляНачисленияЗП.УслугаСумма) КАК УслугаСумма
ИЗ
(ВЫБРАТЬ
ДанныеДляНачисленияЗП.МатериалСуммаПродажи КАК СуммаПродажи
ИЗ
&МатериалСуммаПродажи КАК Продажи
ГДЕ
ДанныеДляНачисленияЗП.Организация = &Организация
И ДанныеДляНачисленияЗП.Дата МЕЖДУ &ДатаНач И &ДатаКон
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ДанныеДляНачисленияЗП.УслугаСумма
ИЗ
&УслугаСумма КАК ДанныеДляНачисленияЗП.УслугаСумма
ГДЕ
ДанныеДляНачисленияЗП.УслугаСумма = &Организация
И ДанныеДляНачисленияЗП.УслугаСумма МЕЖДУ &ДатаНач И &ДатаКон) КАК Продажи
(23) progaoff, Вы сами можете объяснить, что написали здесь?
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.УслугаСумма) КАК УслугаСумма
ИЗ
(ВЫБРАТЬ
ДанныеДляНачисленияЗП.МатериалСуммаПродажи КАК СуммаПродажи
ИЗ
&МатериалСуммаПродажи КАК Продажи
ГДЕ
ДанныеДляНачисленияЗП.Организация = &Организация
И ДанныеДляНачисленияЗП.Дата МЕЖДУ &ДатаНач И &ДатаКон
ОБЪЕДИНИТЬ
ВЫБРАТЬ
ДанныеДляНачисленияЗП.УслугаСумма
ИЗ
&УслугаСумма КАК ДанныеДляНачисленияЗП.УслугаСумма
ГДЕ
ДанныеДляНачисленияЗП.УслугаСумма = &Организация
И ДанныеДляНачисленияЗП.УслугаСумма МЕЖДУ &ДатаНач И &ДатаКон) КАК Продажи
ПоказатьВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.УслугаСуммаБезСкидки) КАК УслугаСуммаБезСкидки,
ДанныеДляНачисленияЗП.Организация,
ДанныеДляНачисленияЗП.Период
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ГДЕ
ДанныеДляНачисленияЗП.Организация = &Организация
И ДанныеДляНачисленияЗП.Период МЕЖДУ &ДатаНач И &ДатаКон
СГРУППИРОВАТЬ ПО
ДанныеДляНачисленияЗП.Период,
ДанныеДляНачисленияЗП.Организация
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
СУММА (ДанныеДляНачисленияЗП.МатериалСуммаПродажи) КАК МатериалыСуммаПродажи,
ДанныеДляНачисленияЗП.Период,
ДанныеДляНачисленияЗП.Организация
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ГДЕ
ДанныеДляНачисленияЗП.Организация МЕЖДУ &ДатаНач И &ДатаКон
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
ДанныеДляНачисленияЗП.Период,
ДанныеДляНачисленияЗП.Организация
ПоказатьОпять по общему результату не корректные цифры
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.УслугаСуммаБезСкидки) КАК УслугаСуммаБезСкидки,
ДанныеДляНачисленияЗП.Организация,
ДанныеДляНачисленияЗП.Период
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ГДЕ
ДанныеДляНачисленияЗП.Организация = &Организация
И ДанныеДляНачисленияЗП.Период МЕЖДУ &ДатаНач И &ДатаКон
СГРУППИРОВАТЬ ПО
ДанныеДляНачисленияЗП.Период,
ДанныеДляНачисленияЗП.Организация
ПоказатьЭто выбор из документов Визит
ВЫБРАТЬ
СУММА (ДанныеДляНачисленияЗП.МатериалСуммаПродажи) КАК МатериалыСуммаПродажи,
ДанныеДляНачисленияЗП.Период,
ДанныеДляНачисленияЗП.Организация
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ГДЕ
ДанныеДляНачисленияЗП.Период МЕЖДУ &ДатаНач И &ДатаКон
И ДанныеДляНачисленияЗП.Организация = &Организация
СГРУППИРОВАТЬ ПО
ДанныеДляНачисленияЗП.Период,
ДанныеДляНачисленияЗП.Организация
ПоказатьПрикрепленные файлы:
продажи.xls
Из группировки, естественно, тоже надо убрать.
ВЫБРАТЬ
СУММА(ДанныеДляНачисленияЗП.УслугаСуммаБезСкидки) КАК УслугаСуммаБезСкидки
ИЗ
РегистрНакопления.ДанныеДляНачисленияЗП КАК ДанныеДляНачисленияЗП
ГДЕ
ДанныеДляНачисленияЗП.Организация = &Организация
И ДанныеДляНачисленияЗП.Период МЕЖДУ &ДатаНач И &ДатаКон
ВЫБРАТЬ
СУММА(Продажа.СуммаДокумента) КАК СуммаДокумента
ИЗ
Документ.Продажа КАК Продажа
ГДЕ
Продажа.Дата МЕЖДУ &ДатаНач И &ДатаКон
И Продажа.Организация = &Организация
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
СУММА (Визит.СуммаОбщая) КАК СуммаОбщая
ИЗ
Документ.Визит КАК Визит
ГДЕ
Визит.Дата МЕЖДУ &ДатаНач И &ДатаКон
И Визит.Организация = &Организация
ПоказатьВ таком виде все четко сошлось по цифрам
Яб так написал
ВЫБРАТЬ
СУММА(ВложенныйЗапрос.СуммаОбщая) / РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ) КАК Поле1
ИЗ
(ВЫБРАТЬ
Визит.СуммаОбщая КАК СуммаОбщая
ИЗ
Визит КАК Визит
ГДЕ
Визит.Дата МЕЖДУ &ДатаНач И &ДатаКон
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Продажа.СуммаДокумента
ИЗ
Продажа КАК Продажа
ГДЕ
Продажа.Дата МЕЖДУ &ДатаНач И &ДатаКон) КАК ВложенныйЗапрос
Показать
(58) progaoff, Null будет если датаНач и ДатаКон неверно установить или если данных нет)) Специально для тебя высылаю свой тестовый вариант
дата = 10.06.2015 0:00:00
ДатаНач = 01.06.2015 0:00:00
ДатаКон = 30.06.2015 0:00:00
Результат 0,68
ВЫБРАТЬ
10 КАК СуммаОбщая,
&дата КАК Дата
ПОМЕСТИТЬ Визит
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
10 КАК СуммаДокумента,
&дата КАК Дата
ПОМЕСТИТЬ Продажа
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
СУММА(ВложенныйЗапрос.СуммаОбщая) / РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ) КАК Поле1
ИЗ
(ВЫБРАТЬ
Визит.СуммаОбщая КАК СуммаОбщая
ИЗ
Визит КАК Визит
ГДЕ
Визит.Дата МЕЖДУ &ДатаНач И &ДатаКон
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Продажа.СуммаДокумента
ИЗ
Продажа КАК Продажа
ГДЕ
Продажа.Дата МЕЖДУ &ДатаНач И &ДатаКон) КАК ВложенныйЗапрос
Показатьдата = 10.06.2015 0:00:00
ДатаНач = 01.06.2015 0:00:00
ДатаКон = 30.06.2015 0:00:00
Результат 0,68
ВЫБРАТЬ
СУММА(Продажа.СуммаДокумента) КАК СуммаДокумента
ПОМЕСТИТЬ
ТабПрод
ИЗ
Документ.Продажа КАК Продажа
ГДЕ
Продажа.Дата МЕЖДУ &ДатаНач И &ДатаКон
И Продажа.Организация = &Организация
;
ВЫБРАТЬ
СУММА(Визит.СуммаОбщая)
ПОМЕСТИТЬ
ТабВиз
ИЗ
Документ.Визит КАК Визит
ГДЕ
Визит.Дата МЕЖДУ &ДатаНач И &ДатаКон
И Визит.Организация = &Организация
;
ВЫБРАТЬ
СУММА (СуммаДокумента+СуммаОБщая) / &КолДней
ИЗ
ТабВиз,
ТабПрод
ПоказатьВот так отработало нормально. Тут бы еще от парамера КолДней избавиться, что бы работало по заданному интервалу..
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот