Proc SQL делает вставку в вызов выполнить в SAS - PullRequest
0 голосов
/ 12 февраля 2019

В наборе данных я использую «вызов выполнить», как показано ниже:

Все отлично работает, кроме двух последних переменных mhstdtc2 и mhendtc2, эти переменные имеют тип num с информацией и форматом даты9.

Я получаю сообщение о том, что числовые переменные преобразуются в символ в этой строке. Каким образом даты должны быть вставлены в вызов, выполнить статистику.Спасибо

Я попытался удалить кавычки, которые создают грязный вызов выполнить

  call execute("proc sql;
insert into leaddata values("||subjid||","||mhterm||","||mhstdtc_dtr||","||mhstdtc_dtr||","||mhstdtc_dtr||","||sitemnemonic||","||mhstdtc2||"d,"||mhendtc2||"d);quit;");

1 Ответ

0 голосов
/ 12 февраля 2019

Перед генерацией кода убедитесь, что вы знаете, какой код вы хотите сгенерировать.Похоже, вы пытаетесь сгенерировать что-то вроде этого:

values(101,Stomach Pain,30NOV2018,15DEC2018,Clinic 47);

Но вам нужно генерировать кавычки вокруг ваших символьных переменных.Кроме того, нет необходимости преобразовывать даты в удобочитаемые литералы даты, просто оставьте их как необработанное число дней.

call execute(catx(' ','proc sql;','insert into leaddata','values('
 ,catx(',',quote(subjid),quote(mhterm),date1,number2,....)
 ,');quit;'));

Но если у вас есть данные в наборе данных, почему бы просто не вставить их непосредственно изнабор данных?

insert into leaddata select subjid,mhterm,.... from have ;
...