Текущее время: Вт, авг 19 2025, 16: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