Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
10 мая 2024, 12:41

Прошу помочь с вложенным запросом

Автор twilight_dream, 23 янв 2013, 19:49

0 Пользователей и 1 гость просматривают эту тему.

twilight_dream

Здравствуйте! Просьба помочь с таким вопросом. Сформировал запрос в MSSql, но нужен такой-же с 1С. Смысл в том, что выборка делится по группам, и считается среднее. Но загвоздка в том, что не могу понять, как в 1С использовать результаты вложенных запросов, которые возвращают одно число. Вобщем, можно ли сделать аналог такого запроса?
select (

(select sum(kolvo)*max(tryd_ed) from tDSheet$ where flag_mo=1 and tryd_ed<1)+

(select sum(kolvo)*max(tryd_ed) from tDSheet$ where flag_mo=1 and tryd_ed>=1 and tryd_ed<10)+

(select sum(kolvo)*max(tryd_ed) from tDSheet$ where flag_mo=1 and tryd_ed>=10 and tryd_ed<20)+

(select sum(kolvo)*max(tryd_ed) from tDSheet$ where flag_mo=1 and tryd_ed>=20 and tryd_ed<30)+

(select sum(kolvo)*max(tryd_ed) from tDSheet$ where flag_mo=1 and tryd_ed>=30 and tryd_ed<40)+

(select sum(kolvo)*max(tryd_ed) from tDSheet$ where flag_mo=1 and tryd_ed>=50 and tryd_ed<60)+

(select sum(kolvo)*max(tryd_ed) from tDSheet$ where flag_mo=1 and tryd_ed>=60))/

(select sum(kolvo) from tDSheet$ where flag_mo=1)

mixqn

Попробуйте так

ВЫБРАТЬ
   (СУММА(
      ВЫБОР
         КОГДА tryd_ed<1 ТОГДА kolvo
         ИНАЧЕ 0
      КОНЕЦ) *
   МАКСИМУМ(
      ВЫБОР
         КОГДА tryd_ed<1 ТОГДА tryd_ed
         ИНАЧЕ 0
      КОНЕЦ)
      +
   СУММА(
      ВЫБОР
         КОГДА tryd_ed>=1 И tryd_ed<10 ТОГДА kolvo
         ИНАЧЕ 0
      КОНЕЦ) *
   МАКСИМУМ(
      ВЫБОР
         КОГДА tryd_ed>=1 И tryd_ed<10 ТОГДА tryd_ed
         ИНАЧЕ 0
      КОНЕЦ)
      +
   СУММА(
      ВЫБОР
         КОГДА tryd_ed>=10 И tryd_ed<20 ТОГДА kolvo
         ИНАЧЕ 0
      КОНЕЦ) *
   МАКСИМУМ(
      ВЫБОР
         КОГДА tryd_ed>=10 И tryd_ed<20 ТОГДА tryd_ed
         ИНАЧЕ 0
      КОНЕЦ)
      +
   СУММА(
      ВЫБОР
         КОГДА tryd_ed>=20 И tryd_ed<30 ТОГДА kolvo
         ИНАЧЕ 0
      КОНЕЦ) *
   МАКСИМУМ(
      ВЫБОР
         КОГДА tryd_ed>=20 И tryd_ed<30 ТОГДА tryd_ed
         ИНАЧЕ 0
      КОНЕЦ)
        +
   СУММА(
      ВЫБОР
         КОГДА tryd_ed>=30 И tryd_ed<40 ТОГДА kolvo
         ИНАЧЕ 0
      КОНЕЦ) *
   МАКСИМУМ(
      ВЫБОР
         КОГДА tryd_ed>=30 И tryd_ed<40 ТОГДА tryd_ed
         ИНАЧЕ 0
      КОНЕЦ)
      +
   СУММА(
      ВЫБОР
         КОГДА tryd_ed>=50 И tryd_ed<60 ТОГДА kolvo
         ИНАЧЕ 0
      КОНЕЦ) *
   МАКСИМУМ(
      ВЫБОР
         КОГДА tryd_ed>=50 И tryd_ed<60 ТОГДА tryd_ed
         ИНАЧЕ 0
      КОНЕЦ)
      +
   СУММА(
      ВЫБОР
         КОГДА tryd_ed>=50 И tryd_ed<60 ТОГДА kolvo
         ИНАЧЕ 0
      КОНЕЦ) *
   МАКСИМУМ(
      ВЫБОР
         КОГДА tryd_ed>=50 И tryd_ed<60 ТОГДА tryd_ed
         ИНАЧЕ 0
      КОНЕЦ)
      +
   СУММА(
      ВЫБОР
         КОГДА tryd_ed>=60 ТОГДА kolvo
         ИНАЧЕ 0
      КОНЕЦ) *
   МАКСИМУМ(
      ВЫБОР
         КОГДА tryd_ed>=60 ТОГДА tryd_ed
         ИНАЧЕ 0
      КОНЕЦ))
      /
   СУММА(kolvo)
ИЗ
   tDSheet
ГДЕ
   flag_mo=1

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск