Вы хотите объединить агрегат с помощью перекрестного объединения комбинаций wk
x labname
. Объединение будет дополнять совокупное покрытие комбинации, вызывая полное покрытие.
Пример:
data weeks;
do week = intnx ('week', '01jan2019'd, 0) by 7 while (year(week) <= 2019);
output;
end;
format week weeku6.;
run;
data labs;
do labname = 'A', 'B', 'C', 'D'; output; end;
run;
proc sql;
create table testlabs1 as
select
labs.labname,
year(weeks.week) as year,
weeks.week,
coalesce(aggregate.lab_count,0) as lab_count
from
labs
cross join
weeks
left join
(
select distinct count(*) as lab_count,
labname,
intnx('year', datepart(labdate), 0) as yr format=year4.,
intnx('week', datepart(labdate), 0) as wk format=weeku6.
from testlabs
where year(datepart(labdate))>2018
group by yr, wk, labname
) aggregate
on aggregate.labname = labs.labname
& aggregate.wk = weeks.week
order by
year, labname, week
;
quit;
symbol color=blue interpol=join;
proc gplot data=testlabs1;
plot lab_count*(week);
by year labname;
where year = 2019;
run;quit;