Count the days with an array:
data have;
input client_id policy_id (start_date end_date) (:mmddyy10.);
datalines;
1 101 1/1/1990 8/1/1992
1 102 5/1/1991 11/1/1991
1 103 5/1/1993 8/1/2000
1 104 1/1/2005 8/1/2010
;
proc sql;
select min(start_date), max(end_date)
into :fromdt trimmed, :todt trimmed
from have;
quit;
data want;
array days {&fromdt:&todt};
do until(last.client_id);
set have; by client_id;
do dt = start_date to end_date;
days{dt} = 1;
end;
firstDt = min(firstDt, start_date);
lastDt = max(lastDt, end_date);
end;
totalPolicyDays = sum(of days{*});
totalPolicySpan = intck("day", firstDt, lastDt);
keep client_id totalPolicyDays totalPolicySpan;
run;
proc print; run;
total total
client_ Policy Policy
Obs id Days Span
1 1 5633 7517
PG