Получение значения группировки

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

Skellar

Подскажите, есть запрос :
Код:
ВЫБРАТЬ
ВП.Показатель,
ВП.Период,
"Формула",
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель)
ИЗ
(ВЫБРАТЬ
ВаловаяПрибыль.Показатель КАК Показатель,
ВаловаяПрибыль.Период КАК Период,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВаловаяПрибыль.Показатель) КАК Раздел,
ВаловаяПрибыль.Сумма КАК Сумма
ИЗ
ВаловаяПрибыль КАК ВаловаяПрибыль

СГРУППИРОВАТЬ ПО
ВаловаяПрибыль.Период,
ВаловаяПрибыль.Сумма,
ВаловаяПрибыль.Показатель) КАК ВП
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
Сч9001.Период КАК Период,
Сч9001.Сумма КАК Сумма,
Сч9001.Показатель КАК Показатель
ИЗ
Сч9001 КАК Сч9001) КАК Выручка
ПО ВП.Период = Выручка.Период
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ДоходыРасходы.Период КАК Период,
ДоходыРасходы.Сумма КАК Сумма,
ДоходыРасходы.Показатель КАК Показатель
ИЗ
(ВЫБРАТЬ
Сч9101.Период КАК Период,
Сч9101.Раздел КАК Раздел,
Сч9101.Показатель КАК Показатель,
ЕСТЬNULL(Сч9101.Сумма, 0) КАК Сумма
ИЗ
Сч9101 КАК Сч9101

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

ВЫБРАТЬ
Сч9102.Период,
Сч9102.Раздел,
Сч9102.Показатель,
ЕСТЬNULL(-Сч9102.Сумма, 0)
ИЗ
Сч9102 КАК Сч9102) КАК ДоходыРасходы) КАК ДохРас
ПО ВП.Период = ДохРас.Период
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
Сч9008.Период КАК Период,
Сч9008.Сумма КАК Сумма,
Сч9008.Показатель КАК Показатель
ИЗ
Сч9008 КАК Сч9008) КАК ОХР
ПО ВП.Период = ОХР.Период

СГРУППИРОВАТЬ ПО
ВП.Период,
ВП.Показатель,
ВП.Сумма

Как получить значение КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель) ? В отчете выводятся различные количества (2 и 1). При попытке поставить условие типа: Если Количество..... = 2 Тогда Выполнить. Но это условие не выполняется. А если написать КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель)+1, результаты вывод увеличатся вдвое. Вопрос - как получить из КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель) обычное число? Или как сделать условие, чтобы оно реагировало?
 
Перезапарился я с этими отчетами уже. Сейчас попробую корректнее сформулировать. Пятая строка описания запроса - поле КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель). Оно выводит в таблицу цифорки 1 или 2 в зависимости от ВП.Показатель. Мне нужно сделать условие с КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель). Условие должно быть таким: Если КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель) = 2, то блаблабла. Условие не выполняется. Не выполняется и все тут. Думается, что из-за группировок, но их убирать нельзя. Как сделать, чтобы условие выполнялось?
Из замеченного - если написать "КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель)+1 " - будут выводится цифорки 2 или 4.
Пояснение - ВП это таблица вложенного запроса, формируется из таблицы ВаловаяПрибыль, которая является временной таблицей, которая формируется из объединения двух временных таблиц. Здесь привел только кусок кода, в самом запросе строк 250-300. Приводить остальной текст считаю нецелесообразным.
Так понятнее?
 
Условие надо в секцию ГДЕ, или как? Почему нельзя его туда написать?
 
Простите, а как оно будет выглядеть в "где" ?
Я планировал сделать поле условием и выводить вот так:
ВЫБОР КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель)=2 ТОГДА (длинная формула) ИНАЧЕ (другая формула) КОНЕЦ
Не выходит, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель) считает себя равным единице. Что ж я делаю не так ?
 
Сгруппируйте в запросе, поместите во временную таблицу, или во вложенный запрос, и еще одним запросом обработайте результат.
 
У меня в запросе есть вложенный вопрос ВП, там идет группировка и я делаю отдельное поле КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВаловаяПрибыль.Показатель) КАК Раздел. Так вот, попытка проделать вышеперечисленное с этим Раздел тоже проваливается.
Я правильно понял, вы такой подход имеете ввиду?
 
Поместил свой запрос в еще один вложенный. Тот же результат. Что вам не нравится в моем русском?
 
А.... просто не читал все.

ВЫБРАТЬ
ВП.Показатель,
ВП.Период,
"Формула",
ВЫБОР КОГДА ВП.Раздел=2 ТОГДА
....
ИНАЧЕ
....
КОНЕЦ КАК
ИЗ
(ВЫБРАТЬ
ВаловаяПрибыль.Показатель КАК Показатель,
ВаловаяПрибыль.Период КАК Период,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВаловаяПрибыль.Показатель) КАК Раздел,


Так пробовали?
 
Да, я в 7ом сообщении писал. Та же фигня. Есть еще какие-нибудь мысли? = \
 
Просто в первом посте у вас есть переменная "Раздел", а верхний запрос выбирает не ее.
 
Вобщем не понимаю я, что делать. Задвоение происходит из за того, что ВП по сути состоит из объединения двух таблиц.
 
Попробуйте разложить вашу махину на более простые запросы и использовать пакет запросов (временные таблицы) станет проще разбираться с траблой и вам и нам
 
Попробуйте разложить вашу махину на более простые запросы и использовать пакет запросов (временные таблицы) станет проще разбираться с траблой и вам и нам
+ к тому, есть консоль запросов, которая позволяет просматривать содержимое временных таблиц.
 
Количество различные определяется на этапе работы с выбранной информацией а не на этапе выборки данных. То бишь весь запрос во временную таблицу а после применяйте формулу к нему.
 
Allexei, Попробовал, результат Количества при таком выводе везде был = 1.
Darlock, Да весь запрос и так разложен на кучу временных таблиц. Просто итог - стыковка нескольких таблиц, результаты в которых есть результат формул ,которые применяются к разным значениям этих временных таблиц. Стыковал через объединения. Старался максимально упростить конструкцию, но все равно получилось много строк.
Проблема была в том, что основная таблица ВП формировалась из ОБЪЕДИНЕНИЯ двух временных таблиц. На начальном этапе работы не получилось полным соединением сделать корректно, некоторые строки или суммы не выводились. А из-за ОБЪЕДИНЕНИЯ и были проблемы. В итоге решил все сделав полное соединение и использовав ЕСТЬNULL(ПараметрВременнойТаблицы1,ПараметрВременнойТаблицы2).
Всем большое спасибо!
 
Мы в соцсетях:

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