['A B', 'F G A']
这删除了我想要的记录(2 06/18/2012 SMALL),但是我想要的是要么该类型应为未删除的记录指示BIG&SMALL,要么是一个新字段指示BIG&SMALL 请注意,当同一天有重复时,只会删除小型记录。
答案 0 :(得分:0)
对于TYPE和DATE2,您需要具有一些逻辑来折叠多个值。
您可以使用数据步骤。
data want ;
do until (last.date);
set have ;
by id date ;
length newtype $25 newdate2 8;
newtype=catx(' ',newtype,type);
newdate2 = coalesce(date2,newdate2);
end;
date2=newdate2;
drop newdate2;
run;
如果您真的想坚持使用SQL(TYPE只有两个值),则可以将查询转换为联接。
proc sql noprint;
create table want2 as
select
coalesce(a.id,b.id) as id
,coalesce(a.date,b.date) as date format=date9.
,catx(' ',a.type,b.type) as NEWTYPE
,coalesce(a.date2,b.date2) as date2 format=date9.
from
(select * from have where type='BIG') a
full join
(select * from have where type='SMALL') b
on a.id = b.id and a.date=b.date
;
quit;
P.S。小心使用<>
作为运算符。它在普通SAS代码中的含义与在SQL代码和WHERE语句中的含义完全不同。