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

时间:2017-12-28 18:28:59

标签: sas sas-macro enterprise-guide

我需要在proc sql语句的alsias名称中有一个特殊字符(%和空格)。

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名称。

我该怎么做才能使这项工作?

提前非常感谢你!

2 个答案:

答案 0 :(得分:1)

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

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

如果您确实需要非标准列名,则还需要设置

options validvarname = any;

Proc SQL

之前

答案 1 :(得分:0)

在SQL中,别名是用于为变量引用添加前缀以告知变量来自哪个输入表(或子查询)的别名。与查询中的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'