Fj_
|
Carpal Tunnel
|
|
|
|
Рег.: 12.09.2004
|
Сообщений: 8795
|
|
Рейтинг: 3287
|
|
Crystal Reports
19.10.2005 17:14
|
|
|
Есть кросстаб. В клеточках - среднее значение некоего поля неких записей. Как заставить его не учитывать те записи, в которых значение этого поля нулевое или отрицательное?
То есть один способ я нашел - поставить фильтр на весь репорт. Но блин, так эти записи проходят мимо всего репорта, а хотелось бы их именно локально отфильтровать, чтобы в соседнем кросстабе вывести как раз сумму по тем записям, в которых оно отрицательное.
Можно суммировать не записи, а формулу от записей, которая их подпатчит. К сожалению, мне нужна не сумма а avg, поэтому нулевые значения не катят. Мб можно как-нибудь вернуть null?
Или можно как-нибудь написать собственную функцию для суммирования, типа avg, но не учитывающую нулевые элементы? А какие у нее параметры?
|
The data is the error (c)IIS FTP Server. |
|
Adoon
|
member
|
|
|
|
Рег.: 03.11.2002
|
Сообщений: 149
|
|
Рейтинг: 101
|
|
Re: Crystal Reports
[re: Fj_]
19.10.2005 21:09
|
|
|
А нельзя посчитать сумму всех, количество всех, кол-во нулевых и на основе этих данных найти среднее (по каждому полю)?
Редактировал Adoon (19.10.2005 21:19)
|
|
maratic_net
|
sir
|
|
|
|
Рег.: 23.12.2003
|
Сообщений: 1073
|
Из: V-1142L
|
Рейтинг: 1
|
|
Re: Crystal Reports
[re: Adoon]
19.10.2005 21:17
|
|
|
Вариант - создать вычисляемый столбец типа formula = if (col > 0) then col else 0 endif и суммирование вести по нему. Ну если юзается все данные берутся прямо из сиквел запроса - написать sum(case ....bla-bla-bla)
|
|
Fj_
|
Carpal Tunnel
|
|
|
|
Рег.: 12.09.2004
|
Сообщений: 8795
|
|
Рейтинг: 3287
|
|
|
>> написать sum(case ....bla-bla-bla) эээ, а где такое написать? В кросстаб эксперте можно только указать summarized fields, способ вычисления "суммы", и поле/формулу, над которой ведется суммирование. Как так?
читаю я не прямо из базы, а из датасета, по поводу чего есть сильное желание сгенерить себе совершенно другой датасет, в котором всю эту фигню попредвычислять, и мучаться больше.
|
The data is the error (c)IIS FTP Server. |
|
maratic_net
|
sir
|
|
|
|
Рег.: 23.12.2003
|
Сообщений: 1073
|
Из: V-1142L
|
Рейтинг: 1
|
|
Re: Crystal Reports
[re: Fj_]
20.10.2005 09:50
|
|
|
в field explorer создай новое вычисляемое поле на основе if. Потом скажи change summary operation - и выбери свое новое выч. поле
|
|
Fj_
|
Carpal Tunnel
|
|
|
|
Рег.: 12.09.2004
|
Сообщений: 8795
|
|
Рейтинг: 3287
|
|
|
А. Так чувак, я ж говорю, мне нужно не сумму брать, а среднее, при этом 0 ващееее не катят. Вот еслиб можно было null вернуть, тогда да.
|
The data is the error (c)IIS FTP Server. |
|
maratic_net
|
sir
|
|
|
|
Рег.: 23.12.2003
|
Сообщений: 1073
|
Из: V-1142L
|
Рейтинг: 1
|
|
Re: Crystal Reports
[re: Fj_]
20.10.2005 12:32
|
|
|
а count(1) или sum(1) не судьба заюзать ???
|
|
Fj_
|
Carpal Tunnel
|
|
|
|
Рег.: 12.09.2004
|
Сообщений: 8795
|
|
Рейтинг: 3287
|
|
|
Где заюзать-то? Я ж говорю - речь о ячейках кросстаба. Я не вижу, как там можно что-нибудь прописать текстом.
Блиа, я что-то перестал понимать.
Если у меня организация базы такая (приблизительно): таблицы A, B, C; B references A.Id, C references A.Id, при этом встречаются только кортежи вида AB и AC (ну то есть как бы у объекта из таблицы А может быть свойство B или свойство С, возможно, не одно), так вот, мне кажется, или когда я в репорт добавляю список AB, а потом список AC, это говно выбирает из базы только те кортежи, в которых есть и B, и C (то есть пустое множество)?! А как с этим побороться?
|
The data | |