Моя проблема следующая - у меня есть макрос, который должен пересекать куски строк и использовать эти строки внутри процедуры sql. Проблема в том, что эти строки не являются простыми и компактными, могут быть пробелы, кавычки.SAS - макрос петли через фрагменты текста
ввода строки в макрос% Roz следующий:
list1,list2
OID,in ("IDC","NPK")
OED,in ("EDC")
ZFP,in ("ZFP")
макросоци- выглядит следующим образом:
%macro roz(list1,list2);
%let n=%sysfunc(countw(&list1));
%do i=1 %to &n;
%let kanal = %scan(&list1,&i);
%let inlist = %scan(&list2,&i);
proc sql;
create table data_stor1_&kanal._file as select sum(pocet)
as pocet, Dch
from data_stor3_&kanal where Dch &inlist group by dat_poc;
quit;
%end;
%mend roz;
%roz(OID OED,'in ("IDC","NPK")' 'in ("EDC")');
Моя проблема заключается в том, что я не знаю, как сделать мой макрос прочитать фрагменты в списке2 и сохранить формат (кавычки, пробелы и т. д.). Я могу решить проблему ранее в своей программе, переключаясь с строк на числа, но мне любопытно, есть ли способ, как решить проблему напрямую.
Моих два в результате SQL «выбирает» должен выглядеть следующим образом:
create table data_stor1_OID_file as select sum(pocet) as pocet, Dch
from data_stor3_OID where Dch in ("IDC","NPK") group by dat_poc;
create table data_stor1_OED_file as select sum(pocet) as pocet, Dch
from data_stor3_OED where Dch in ("EDC") group by dat_poc;
Спасибо за любые предложения!
Спасибо, сейчас он работает :-) –