SAS列名替换方案

SAS column name replacement scheme

我有一个使用 proc sql 的传递查询(下面摘录),其中一些结果名称被修改,因为它们不是有效的 SAS 名称。 1A_A 取代, 2A_A0 取代,还有一些其他的变化。我的问题是:

.

proc sql;
connect to oracle as clc([omitted]);
CREATE table out.bk_ald as
SELECT *
FROM connection to bpm (

SELECT
  , "1A"
  , "1B"
  , "1C"
  , "1D"
  , "1E"
  , "2A"
  , "2B"
  , "2C"
...

您不能更改算法,我不确定它是否已发布。但是您可以自己在 Oracle 端重命名该列。

select * from connection to oracle (select "1A" as "_1A", ...);

或者在 SAS 端重命名。 SAS 会将原始名称存储为变量的标签。您可以查询元数据并使用它来重命名变量。

proc contents data=bk_ald noprint out=contents; run;
proc sql noprint ;
  select catx(name,'=',cats('_',label)) into :rename separated by ' '
  from contents 
  where upcase(name) ne upcase(label)
  ;
quit;
data want ;
  set bk_ald;
  rename &rename ;
run;