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

问题描述 投票:1回答:2

我需要在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名称。

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

非常感谢你提前!

sas sas-macro enterprise-guide
2个回答
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之前。


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'
© www.soinside.com 2019 - 2024. All rights reserved.