This is roughly the DATA step I am running: DATA work.dataset; SET db.table; WHERE StringVariable = 'LOAD' AND NumberVariable = 1; RUN; In db.table, NumberVariable takes the value of either 0 or -1. Running this DATA step, one would think that this would bring in 0 observations since there is no instance where NumberVariable=1. However, It does load all observations into work.dataset where NumberVariable= -1 but not where NumberVariable = 0, so it's as if the WHERE statement only looks at the absolute value of NumberVariable Both Format and Informat of NumberVariable is "2." If I remove both the format and informat (i.e. so that running a PROC CONTENTS of this dataset shows blank spaces under the FORMAT and INFORMAT columns for NumberVariable), it still brings in observations where NumberVariable = -1. HOWEVER, when I use an IF statement instead of the WHERE statement, so that it reads: DATA work.dataset; SET db.table; IF StringVariable = 'LOAD' AND NumberVariable = 1; RUN; ….then 0 observations are read into work.dataset, as one would think as there are no observations in db.table where NumberVariable =1, only those where it =0 or =-1 Does anyone know why this is?
... View more