Как объединить несколько столбцов эффективным способом - PullRequest
0 голосов
/ 02 июля 2018

В моей таблице есть восемь столбцов, и я объединяю два столбца с шестью другими столбцами как

data case;
set case;

stage1_to = cats(stage1_to, ',' , email_to);
stage1_cc = cats(stage1_cc, ',' , email_cc);

stage2_to = cats(stage2_to, ',' , email_to);
stage2_cc = cats(stage2_cc, ',' , email_cc);

stage3_to = cats(stage3_to, ',' , email_to);
stage3_cc = cats(stage3_cc, ',' , email_cc);
run;

Теперь на одной из стадий я отправляю разные письма разным пользователям.

Пример данных

email_to =  email@to.com
email_cc =  email@cc.com
stage1_to = stage1@to.com
stage1_cc = stage1@cc.com
stage2_to = stage2@to.com
stage2_cc = stage2@cc.com
stage3_to = stage3@to.com
stage3_cc = stage3@cc.com

Мой код Объединение всех столбцов сцены с email_to и email_cc.

  • Если столбцы to или cc этапа отсутствуют, данные добавляются как
    ", email @ to.com" и ", email @ cc.com" и система выдает ошибку
    потому что ", email @ to.com" не является действительным адресом электронной почты.

  • то же самое, если не указан email_cc или столбец email_cc и stage cc
    в нем нет данных, он будет обновлять только "," или "stage2@cc.com" это опять неверный адрес электронной почты.

Пожалуйста, предложите мне хороший подход для устранения всех этих ошибок. На переднем конце Email_to является обязательным, а все остальные поля являются необязательными. Моя главная цель - объединить столбцы сцены с email_to и email_cc.

Email_to и Email_cc имеет все

В настоящее время я делаю это

data case_stage1_to_concatenate;
set case;

stage1_to = cats(stage1_to, ',' , email_to);
where stage1_to ne "" and email_to ne "";
run;

data case_stage1_to_update;
set case;

stage1_to = email_to;
where stage1_to eq "";
run;

Я создаю два набора данных для каждого поля, а затем объединяю их в один набор.

Просьба предложить лучший подход

1 Ответ

0 голосов
/ 02 июля 2018

Использование CATX(",", thing1, thing2,...)

CATX будет объединяться с разделителем и обрабатывать пропущенные значения таким образом, что вы никогда не получите два последовательных разделителя или только начальный или только конечный разделитель.

...