我需要在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名称。
我该怎么做才能使这项工作?
提前非常感谢你!
答案 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中,别名是用于为变量引用添加前缀以告知变量来自哪个输入表(或子查询)的别名。与查询中的a
和b
一样。你在谈论的是变量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'