Текущее время: Вт, сен 09 2025, 18:57

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Как реализовать такой запрос ?
СообщениеДобавлено: Пт, фев 03 2006, 13:14 
Гость
Куб или ODS представлен записями

K1 K2 V
---------
1 1 5
2 1 10
3 2 20
4 2 15

Требуется написать запрос с параметром L, который будет вычислять
сумма(V), по всем K1, ограниченную K2 = 2 и условием Vi < L (то есть условие должно проверяться для каждой обрабатываемой строки, а не для сумма(V) < L) и количество строк, удовлетворяющих условиям, на основе которых расчитана сумма(V)

Например, пусть L = 17, тогда для
вышеприведенных данных результат должен быть
сумма(V) = 15
количество = 1.

Как можно это реализовать?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, фев 03 2006, 14:58 
Гость
Неужели нет такой возможности?! По другому, надо ограничивать показатель не значениями признака, а некоторым пороговым значением.

K1 K2 V
1 1 5
1 2 10
2 1 25
3 2 14

Если L = 15, то надо реализовать условие, при котором

SUM(V) = SUM(Vi, при условии Vi < L) = 29
CNT(V) = CNT(Vi < L) = 3

где L - параметр запроса.

Куда копать? Задача элементарная, но возможностями BEX не получается или я чего не знаю ;(


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, фев 05 2006, 09:55 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, мар 08 2005, 11:17
Сообщения: 69
Откуда: Россия
Пол: Мужской
SAP-мучитель написал(а):
Куда копать? Задача элементарная, но возможностями BEX не получается или я чего не знаю ;(


так, на сколько я понимаю бекс на экселе построен, может тут скорее про возможности экселя имееться ввиду???


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:   Тема решена
СообщениеДобавлено: Пн, фев 06 2006, 09:32 
Гость
Вопрос все еще актуален.

В переводе на реляционный язык надо сделать следующее

Есть таблица T

K1 K2 K3 V1
--------------
1 4 5 100
2 3 1 250
и т. д.

где K1 K2 K3 - ключевые поля, V1 - неключевое (показатель)

BEX позволяет строить запросы вида (упрощенно в качестве примера)

select K1, K2, sum(V1), count(V1)
from T
where K1 = :1 and K2 = :2
having sum(V1) < :3
group by K1, K2

где :1, :2, :3 - параметры запроса

а мне надо построить запрос вида

select K1, K2, sum(V1), count(v1)
from T
where K1 = :1 and K2 = :2 and V1 < :3
group by K1, K2

Как этого добиться


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 06 2006, 11:52 
Гость
Может можно сделать рассчитанный показатель:
Сi=Vi*Bi, где Bi булев оператор вида: (1 если Vi<L, 0 else)
А потом ограничить Ci признаком К2.
Сумма Bi = CNT


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 06 2006, 12:03 
Гость
Если быть точнее, то надо выполнить

select K1, sum(V1), count(v1)
from T
where K1 = :1 and V1 < :2
group by K1


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 06 2006, 12:10 
Гость
Что касается предложенного

Цитата:
Сi=Vi*Bi, где Bi булев оператор вида: (1 если Vi<L, 0 else)
А потом ограничить Ci признаком К2.
Сумма Bi = CNT


то условие Сi=Vi*Bi выполняется уже после группировки, а не для каждой строки. Ограничить расчитанный показатель нельзя. Ограничить показатель, учавствующий в расчитанном можно, но это не дает возможность формуле расчитываться для каждой строки для агрегации. По крайней мере у меня не получилось.


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 06 2006, 14:44 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Вс, июн 26 2005, 22:41
Сообщения: 1135
Откуда: Москва
Пол: Мужской
вариантов как всегда 2:
1. Правилом в BW
2. Макросом в книге
Дерзай...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 06 2006, 15:13 
Гость
Правилом в BW отпадает - мне нужно, чтобы значение параметра ограничения вводилось в момент построения запроса.

На VB - тоже практически не осуществимо, огромное количество записей отображать в отчетной книге, а потом их там агрегировать, это полная ерунда получится


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 07 2006, 09:49 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Вс, июн 26 2005, 22:41
Сообщения: 1135
Откуда: Москва
Пол: Мужской
SAP-мучитель написал(а):
Если быть точнее, то надо выполнить

select K1, sum(V1), count(v1)
from T
where K1 = :1 and V1 < :2
group by K1


Если V1 - это значения и тебе необходимо ограничить отчет по нему, то воспользуйся условиями в запросе, в нем пропиши что V1 условие "ввод переменной", тогда ты сможешь ограничивать как по признакам, так и по показателям


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 07 2006, 10:24 
Гость
Разумеется я создавал условия, но они отрабатывают уже после агрегации, а мне надо выбирать по условию каждую запись из провайдера, а затем уже агрегировать. Так что не работает. Еще есть идеи?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 07 2006, 14:42 
Гость
кроме показателя V сделай признак и фильтруйся по нему


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 07 2006, 15:33 
Гость
Цитата:
кроме показателя V сделай признак и фильтруйся по нему


Поконкретнее, если можно...


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 07 2006, 16:43 
Гость
ну что конкретнее...
если я правильно понял, v это целочисленный показатель
делаешь признак мм и грузишь в него тоже, что и в v
в отчёте делаешь ограниченный показатель, и обраничиваешь признак
vv интервалом от 0 до введённого пользователем значения...


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 07 2006, 17:45 
Гость
Значения V могут варьироваться в довольно широком диапазоне, измерение по вновь созданному признаку будет... прямо сказать не маленьким. Если использовать ODS, то по идее должно сработать. Спасибо


Пометить тему как нерешенную
Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB