别名 Proc 中的特殊字符 sql- SAS 9.3

special characters in alias Proc sql- SAS 9.3

我需要在 proc sql 语句的别名中有一个特殊字符(% 和 space)。

proc sql DQUOTE=ANSI;
create table final_data as
select a.column1 as XYZ, 
((a.colum2/b.colum2)-1) as "% VS LY"
from table1 a
join table2 b on a.colum3=b.colum3;
quit;

根据文档,选项 proc sql DQUOTE=ANSI 应该可以工作..

http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001393333.htm

但是,我在 SAS 9.3 中遇到此错误

错误:值 % VS LY 不是有效的 SAS 名称。

我应该怎么做才能完成这项工作?

在此先感谢您!

也许更简单的解决方案是使用标准命名和 SAS 标签。如果计算值介于 0 和 1 之间,您还可以添加 SAS 格式。

((a.colum2/b.colum2)-1) as vs_ly_pct label='% VS LY' format=percent5.2

如果你真的想要非标准的列名,你还需要设置

options validvarname = any;

Proc SQL.

之前

在 SQL 中,别名是您用来为变量引用添加前缀以告知变量来自哪个输入 table(或子查询)的别名。就像查询中的 ab 一样。你说的是变量 NAME.

SAS 变量名通常限制为下划线和字母数字字符(并且不能以数字开头),但变量 LABELS 可以是任何字符串。您可以在名称后指定标签。

select a.column1 as XYZ
     , ((a.colum2/b.colum2)-1) as var2 '% VS LY'

或者使用 SAS 特定的 LABEL= 语法

select a.column1 as XYZ
     , ((a.colum2/b.colum2)-1) as var2 label='% VS LY'