别名 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(或子查询)的别名。就像查询中的 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'
我需要在 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(或子查询)的别名。就像查询中的 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'