Текущее время: Вс, сен 07 2025, 13:44

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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