Focal Point
[SOLVED] How to use DECODE to assign null values?

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/6307009826

February 20, 2013, 10:40 AM
ok
[SOLVED] How to use DECODE to assign null values?
I'm a webfocus newbie and am having trouble with getting a DECODE statement to work the way I would like it to.


TOTALPOINTS/I6 = DECODE QUESTION(Green 100 Red 0);


Basically for the QUESTION data set there are possible responses of "Green", "Red", and a few others. For any value QUESTION besides Green and Red, I would like TOTALPOINTS to be a null value.

The way it works now, if there is a question that is not green or red, the decode statement still presents you with a 0 as the result. I would like it to be NULL.

I'm having trouble accomplishing this and have reviewed the help documentation and searched through the forum without luck. Any help would be greatly appreciated!

This message has been edited. Last edited by: Kerry,


WebFOCUS 7.6
Windows, All Outputs
February 20, 2013, 11:12 AM
Francis Mariani
Putting the MISSING keyword in a DECODE crashes the agent, so you could change the DECODE to a series of IF ELSE statements:

TABLE FILE CAR
PRINT 
COUNTRY
COMPUTE TOTALPOINTS/I6 MISSING ON = 
-*DECODE COUNTRY('ENGLAND' 100 'ITALY' 0 ELSE MISSING);
IF COUNTRY EQ 'ENGLAND' THEN 100 ELSE IF COUNTRY EQ 'ITALY' THEN 0 ELSE MISSING;
END



Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
February 21, 2013, 01:21 AM
FrankDutch
Or do the decode with an extra ...
ELSE -1...
And in an second define change the minus 1 to a missing ..




Frank

prod: WF 7.6.10 platform Windows,
databases: msSQL2000, msSQL2005, RMS, Oracle, Sybase,IE7
test: WF 7.6.10 on the same platform and databases,IE7

February 27, 2013, 03:50 PM
ok
Thanks for the tips. I ended up doing something like

SCORE/I6 MISSING ON = IF DECODE ANSWER(NotApplicable 1 NotAsked 1) GT 0 THEN MISSING ELSE DECODE ANSWER(Green 100 Red 0);

That got me a null value where I wanted it Smiler


WebFOCUS 7.6
Windows, All Outputs
February 27, 2013, 04:16 PM
Francis Mariani
Very creative! In all my years of FOCUSing, I've never used a DECODE within an IF statement...


Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
February 28, 2013, 08:55 AM
jgelona
I use DECODE in IF statements all the time when I need MISSING values. I would have coded the statement like this:
SCORE/I6 MISSING ON = IF ANSWER IN ('NotApplicable','NotAsked')
  THEN MISSING ELSE DECODE ANSWER(Green 100 Red 0);



In FOCUS since 1985. Prod WF 8.0.08 (z90/Suse Linux) DB (Oracle 11g), Self Serv, Report Caster, WebServer Intel/Linux.