• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Вычисление значения в запросе #2

  • Автор темы Skellar
  • Дата начала
S

Skellar

Еще один вопрос из цикла занимательных отчетов. Есть у меня в отчете (скрин приложен) ВАЛОВАЯ ПРИБЫЛЬ, которая для каждого элемента вычисляется как Выручка от реализации(значение по счетуКт 90.01) - Себестоимость товара(значение по СчетуДт 90.02). Еще есть ОБЩИЕ ХОЗ РАСЧЕТЫ(Оборот по счетуДТ 90.08).
Подскажите, как можно сделать разность поэлементно Валовой прибыли и итога за месяц Общих хоз расчетов ? Реализовать все надо в скд, вот код запроса:

Код:
ВЫБРАТЬ
ХозрасчетныйОбороты.Субконто1 КАК Показатель,
ХозрасчетныйОбороты.Период КАК Период,
"1 Выручка от реализации товаров" КАК Раздел,
ЕСТЬNULL(ХозрасчетныйОбороты.СуммаОборотКт, 0) КАК Сумма
ПОМЕСТИТЬ Сч9001
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(, , Месяц, Счет.Ссылка В ИЕРАРХИИ (&Счет9001), , , , ) КАК ХозрасчетныйОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ХозрасчетныйОбороты.Субконто1 КАК Показатель,
ХозрасчетныйОбороты.Период,
"2 Себестоимость товаров" КАК Раздел,
ЕСТЬNULL(ХозрасчетныйОбороты.СуммаОборотДт, 0) КАК Сумма
ПОМЕСТИТЬ Сч9002
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(, , Месяц, Счет.Ссылка В ИЕРАРХИИ (&Счет9002), , , , ) КАК ХозрасчетныйОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
ХозрасчетныйОбороты.Период,
ХозрасчетныйОбороты.КорСубконто1 КАК Показатель,
"4 Общие хозяйственные расходы" КАК Раздел
ПОМЕСТИТЬ Сч9008
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(, , Месяц, Счет.Ссылка В ИЕРАРХИИ (&Счет9008), , , КорСчет.Ссылка = &Счет26, ) КАК ХозрасчетныйОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Сч9001.Показатель,
Сч9001.Период,
Сч9001.Раздел,
ЕСТЬNULL(Сч9001.Сумма, 0) КАК Сумма
ИЗ
Сч9001 КАК Сч9001

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

ВЫБРАТЬ
Сч9002.Показатель,
Сч9002.Период,
Сч9002.Раздел,
ЕСТЬNULL(Сч9002.Сумма, 0)
ИЗ
Сч9002 КАК Сч9002

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

ВЫБРАТЬ
Сч9008.Показатель,
Сч9008.Период,
Сч9008.Раздел,
ЕСТЬNULL(Сч9008.Сумма, 0)
ИЗ
Сч9008 КАК Сч9008

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

ВЫБРАТЬ
ВложенныйЗапрос.Показатель,
ВложенныйЗапрос.Период,
"3 Валовая прибыль",
ВложенныйЗапрос.Сумма
ИЗ
(ВЫБРАТЬ
Сч9001.Показатель КАК Показатель,
Сч9001.Период КАК Период,
Сч9001.Раздел КАК Раздел,
ЕСТЬNULL(Сч9001.Сумма, 0) КАК Сумма
ИЗ
Сч9001 КАК Сч9001

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

ВЫБРАТЬ
Сч9002.Показатель,
Сч9002.Период,
Сч9002.Раздел,
ЕСТЬNULL(-Сч9002.Сумма, 0)
ИЗ
Сч9002 КАК Сч9002) КАК ВложенныйЗапрос
 

Вложения

  • _____3.JPG
    _____3.JPG
    95,8 КБ · Просмотры: 459
U

User1C

Сделай еще 1 подзапрос, получай итоги Общих хоз расчетов, обзави как ВложеныйЗапрос1.Сумма1, потом отнимаешь ВложеныйЗапрос.Сумма - ВложеныйЗапрос1.Сумма1.

Наверное так:

Код:
ВЫБРАТЬ
ВложенныйЗапрос.Показатель,
ВложенныйЗапрос.Период,
"3 Валовая прибыль",
ВложенныйЗапрос.Сумма - ВложенныйЗапрос1.Сумма1
ИЗ
(ВЫБРАТЬ
Сч9001.Показатель КАК Показатель,
Сч9001.Период КАК Период,
Сч9001.Раздел КАК Раздел,
ЕСТЬNULL(Сч9001.Сумма, 0) КАК Сумма
ИЗ
Сч9001 КАК Сч9001

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

ВЫБРАТЬ
Сч9002.Показатель,
Сч9002.Период,
Сч9002.Раздел,
ЕСТЬNULL(-Сч9002.Сумма, 0)
ИЗ
Сч9002 КАК Сч9002) КАК ВложенныйЗапрос

(ВЫБРАТЬ
ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма1
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(, , Месяц, Счет.Ссылка В ИЕРАРХИИ (&Счет9008), , , КорСчет.Ссылка = &Счет26, ) КАК	 ХозрасчетныйОбороты) КАК ВложенныйЗапрос1


Либо придется сделать еще 1-ну промежуточную виртуальную таблицу с итогами, потом отнимать от каждого элемента показателя Валовой прибыли.
 
S

Skellar

Собственно делал через вложенные запросы, вот так :
Код:
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ВП.Показатель,
ВП.Период,
"Блин",
ВП.Сумма
ИЗ
Сч9001 КАК Сч9001, Сч9002 КАК сч9002 ,
(ВЫБРАТЬ
ВаловаяПрибыль.Показатель КАК Показатель,
ВаловаяПрибыль.Период КАК Период,
ВаловаяПрибыль.Раздел КАК Раздел,
ВаловаяПрибыль.Сумма КАК Сумма
ИЗ
ВаловаяПрибыль КАК ВаловаяПрибыль) КАК ВП
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
Сч9008.Период КАК Период,
Сч9008.Сумма КАК Сумма
ИЗ
Сч9008 КАК Сч9008) КАК ОХР
ПО ВП.Период = ОХР.Период

СГРУППИРОВАТЬ ПО
ВП.Показатель,
ВП.Период,
ВП.Сумма
Только тут такая проблема, если не делать группировку по ВП.Сумма - ее значение становится больше в несколько раз. А значение ОХР.Сумма постоянно в несколько раз больше ожидаемого. Не понимаю, из-за чего.
 
S

Skellar

Даже так, если выводить СРЕДНЕЕ(ОХР.Сумма), результат среднего удваивается для тех номенклатур, которые присутствуют в обеих изначальных таблицах: ВЫРУЧКА и СЕБЕСТОИМОСТЬ. Наверное профит будет,если сделать условие на проверку этой задваимости. Только вот как его сделать? ;)
 
U

unknown181538

Все не читал, но рискну предположить, что агрегатная функция МАКСИМУМ( вас должна спасти.
 
S

Skellar

Собственно МАКСИМУМ не спасла, самый каверзный вопрос в теме выше отдельно поднят.
 
U

unknown181538

Ну нереально много длинных постов.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!