通过Proc SQL语句将列添加到SAS

通过Proc SQL语句将列添加到SAS,sql,sas,Sql,Sas,我还没能找到这个确切的问题——但它似乎足够简单,以前可能有人问过。我事先道歉如果我的搜索技巧不符合标准……/P> 无论如何,我试图创建一个“source_flag”列,附加到我正在创建的几个表中。基本上,每年和支付类型都有自己的表。我可以单独查询和操作每个表,但我会在过程结束时将它们全部连接在一起(完全连接)。我想创建一个列,每个观察值都等于数据来自的表 proc sql; create table 2020_PD as select ..., ..., ..., "2020

我还没能找到这个确切的问题——但它似乎足够简单,以前可能有人问过。我事先道歉如果我的搜索技巧不符合标准……/P> 无论如何,我试图创建一个“source_flag”列,附加到我正在创建的几个表中。基本上,每年和支付类型都有自己的表。我可以单独查询和操作每个表,但我会在过程结束时将它们全部连接在一起(完全连接)。我想创建一个列,每个观察值都等于数据来自的表

proc sql;

create table 2020_PD as select
 ...,
 ...,
 ...,
 "2020_PD"          as source_flg,
 .
 .
 .
  ;
quit;
例如,我想联接六个表:

2019年(星期四)

2020年(星期二)

2019_PB

2020_PB

2019年

2020年

我要做的就是在每个表的查询中,创建一个列,将表名分配给整行,这样我就知道每一行来自哪里

proc sql;

create table 2020_PD as select
 ...,
 ...,
 ...,
 "2020_PD"          as source_flg,
 .
 .
 .
  ;
quit;
目前,SAS正试图找到一个名为2020_PD的字段,这显然是不存在的。在proc语句中有没有一种简单的方法来实现这一点?我没有尝试添加额外的数据步骤,因为我使用了太多的表来实现这一点


谢谢

SQL使用单引号来分隔字符串。因此,请使用:

'2020_PD' as source_flg,

双引号被解释为标识符的转义字符,这就是为什么会出现未知列错误。

那么这是追加吗?如果是追加,请查看SET语句选项INDSNAME,它将所有数据集追加在一起,并添加源数据集的字段。从理论上讲,一个连接可以来自多个表,不是吗?嗨,欢迎来到Stack Overflow。请阅读以更好地了解如何设置问题的格式。另请参阅。这是一个附加,是的-谢谢你的格式提示。我终于弄明白了。我认为引语是在抛开它,使用撇号似乎可以解决它。非常感谢。