COGNOiSe.com - The IBM Cognos Community

IBM Cognos 10 Platform => Cognos 10 BI => Framework Manager => Topic started by: sagethegemini on 27 Oct 2015 06:25:38 AM

Title: Distinguish rounded zero from "real" zero
Post by: sagethegemini on 27 Oct 2015 06:25:38 AM
Hello,
I have a value calculated this way :
A = sum(cast( [my_elementary_value];decimal(18;0)))
--> Non-rounded value
B = cast(cast( A /5;Decimal(16;1) )+0,5;INTEGER)*5
--> Rounded value

I use the B value in my reports. The result is used in crossed tabs, so the returned value must not be char.
I'm trying to find a way to make B display a "special" 0 (like +0) if A doesn't equals zero before rounding.

Example :
A = 2 => B = +0 (the zero is rounded)
A=0 => B = 0
Title: Re: Distinguish rounded zero from "real" zero
Post by: Lynn on 27 Oct 2015 07:23:10 AM
Quote from: sagethegemini on 27 Oct 2015 06:25:38 AM
Hello,
I have a value calculated this way :
A = sum(cast( [my_elementary_value];decimal(18;0)))
--> Non-rounded value
B = cast(cast( A /5;Decimal(16;1) )+0,5;INTEGER)*5
--> Rounded value

I use the B value in my reports. The result is used in crossed tabs, so the returned value must not be char.
I'm trying to find a way to make B display a "special" 0 (like +0) if A doesn't equals zero before rounding.

Example :
A = 2 => B = +0 (the zero is rounded)
A=0 => B = 0

You could do it in the layout and use a conditional style to distinguish 0 from anything greater than 0 but less than 1, plus the same for negative numbers if those are possible for your data.
Title: Re: Distinguish rounded zero from "real" zero
Post by: Lynn on 27 Oct 2015 07:28:10 AM
Oh, sorry....I just realized this is in the FM section rather than in the Report Studio section.

I suspect you might need another data item to indicate if the situation exists or not that the author could then use as the basis for styling in the layout.
Title: Re: Distinguish rounded zero from "real" zero
Post by: sagethegemini on 27 Oct 2015 08:10:04 AM
Thanks for your response. I have created a dataitem like this :

CASE

WHEN
(
B = 0
AND ( A = 0
OR A   is null
))
THEN 0

WHEN
(
B = 0
AND ( A  <> 0
))

THEN +0
else B
end


I used the same code to generate a flag dataitem (as you suggested) "Flag value is rounded" that would output "Not -Rounded" in the first case and "Rounded" in the second one.

Problem is when i try to cross the flag with other dimensions in QueryStudio, I get the classic error "Selected non-aggregate values must be part of the associated group" as if the group by clause was missing...