I have a table with a dummy var set to 0 for all rows EXCEPT the rows most recently sent for each person. In that case the dummy var should be set to 1.
The dummy var is incorrectly set to 1 for more than just the most recently sent row so I need to reset the dummy var to zero for all rows EXCEPT the rows most recently sent by each person.
I have a var called report_time and can ID the most recently sent row by using max(report_time).
The following syntax did not work:
proc sql;
update table1
set dummy_var =
case
when max(report_time) = report_time then dummy_var=1
else dummy_var = 0
end;
group by person
order by report_time desc, person asc;
quit;
below end is the following:
ERROR: The value expression referenced by column dummy_var can not directly contain a summary function.
Below group is the following:
ERROR 180-322: Statement is not valid or it is used out of proper order.
You can do it easyly by sort and a data step:
proc sort data=have; by person_id report_time; run;
data want;
set have;
by person_id;
if last.person_id then dummy_var=1;
else dummy_var=0;
run;
Sorry, I have almost no experience with oracle tables.
I tested the timing of doing a proc sql update of the rows that needed to be changed from dummy_var = 1 to dummy_var = 0, and found that takes over an hour which is much too long.
The next approach I tested was to delete the rows that needed updating, then adding those rows back in but with the correction.
I was surprised to find it takes 10 times longer to delete rows using proc sql than it takes using a data step.
Using proc sql insert is very quick so that is the method I used to get the rows of data back into the dataset.
I am trying to update an oracle table using base SAS in the most efficient manner and welcome any suggestions.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Early bird rate extended! Save $200 when you sign up by March 31.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.