If Bedingung Neuer Anlauf

Hallo fmader,

vielen Dank für Deine Hilfe. Leider läuft die Query noch nicht.
Wenn der Wert von round ARPM<1 ist soll in die neue Spalte Score ARPM eine 0 eingetragen werden, wenn der Wert von round ARPM zwischen 1 und 5 liegt soll der Wert 0,5 eingetragen werden.

PROC SQL;
CREATE TABLE EGTASK.QURY6410 AS SELECT DISTINCT QURY0914.ROOT_CUSTOMER_NODE_ID FORMAT=11.,
QURY0914.'lifetime month'n,
QURY0914.'round ARPM'n,
('') AS 'Score ARPM'n
WHEN round(ARPM<1) THEN 'Score ARPU'n=0,
WHEN (round(ARPM>1) And round(ARPM<5)) THEN 'Score ARPU'n=0.5
FROM EGTASK.QURY0914 AS QURY0914;
QUIT;

Folgende Fehlermeldung erschein im (Log):

1 *';*";*/;run;
2 OPTIONS PAGENO=MIN;
3 ODS _ALL_ CLOSE;
NOTE: Some of your options or statements may not be supported with the Activex or Java series of devices. Graph defaults for these drivers may be different from other SAS/GRAPH device drivers. For further information, please contact Technical Support.
4 OPTIONS DEV=ACTIVEX;
5 FILENAME EGHTML TEMP;
NOTE: Writing HTML(EGHTML) Body file: EGHTML
6 ODS HTML(ID=EGHTML) FILE=EGHTML STYLESHEET=(URL="file:///C:/Program%20Files/SAS/Shared%20Files/BIClientStyles/EGDefault.css") ATTRIBUTES=("CODEBASE"="http://www2.sas.com/codebase/graph/v91/sasgraph.exe") NOGFOOTNOTE GPATH=&sasworklocation
6 ! NOGTITLE>1) And round(ARPM<5)) THEN 'Score ARPU'n=0.5
20 FROM EGTASK.QURY0914 AS QURY0914;
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
21 QUIT;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

22
23
24
25
26
27
28
29 %LET _CLIENTTASKLABEL=;
30 %LET _EGTASKLABEL=;
31
32 ODS _ALL_ CLOSE; RUN;
33 *';*";*/;run;
34
35 QUIT; RUN;
36 %_egepilogue;
NOTE: Writing HTML Body file: _EGCLOSE

NOTE: 1 lines were written to file PRINT.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds

NOTE: Fileref _EGCLOSE has been deassigned.

würde mich sehr freuen, wenn Du mir helfen könntest.

Bitte ...

... eine Diskussion über ein Thema fortsetzen und nicht jedesmal ein neues Thema aufmachen. Einfach auf "kommentieren" bzw. "antworten" klicken. Ich habe den dritten Beitrag zu diesem Thema daher gelöscht.

... keine Größer- und Kleiner-Zeichen im Text verwenden, diese müssen kodiert werden: für "<" schreibt man "&lt;", für ">" schreibt man "&gt;". Noch besser ist es, SAS-Code einzuschließen in <sascode> und </sascode>.

... in das Benutzerkonto mindestens den vollständigen Namen und die Organisation, bei Studenten die Universität, mit aufnehmen. Wir helfen hier gerne, aber wir möchten auch wissen, mit wem wir es zu tun haben.

Mit logischen Ausdrücken rechnen

Das läßt sich recht leicht realisieren, indem die logischen Ausdrücke als Teil einer Berechnung verwendet werrden

PROC SQL;
CREATE TABLE EGTASK.QURY6410 AS
    
SELECT
     
DISTINCT QURY0914.ROOT_CUSTOMER_NODE_ID FORMAT=11.
    
,QURY0914.'lifetime month'n
    ,QURY0914.'round ARPM'n
    ,(round(ARPM) <
1) + (round(ARPM) > 1 AND round(ARPM) < 5)*0.5 AS ARPU
    
FROM xyz
;
QUIT;
Ist die erste Bedingung (round(ARPM) < 1) wahr, so erhält ARPU den Wert 1 (=true), ist die zweite Bedingung (round(ARPM) > 1 AND round(ARPM) < 5) wahr, erhält ARPU den Wert 1 (=true) * 0.5, also 0.5.
Hierbei ist natürlich etwas Vorsicht geboten, daß stets nur eine der verwendeten Bedinungen wahr ist. So lassen sich aber beliebig viele Bedinungen kombinieren.