Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将新表统计信息附加到具有现有标识符的现有表的下一行_Sql_Sas_Append - Fatal编程技术网

Sql 将新表统计信息附加到具有现有标识符的现有表的下一行

Sql 将新表统计信息附加到具有现有标识符的现有表的下一行,sql,sas,append,Sql,Sas,Append,我有多个表,所有表都包含一个州不同zipcodes的统计信息。为了做到这一点,我运行了一个循环,对它们进行了遍历,所以我已经(zipcode1 zipcode2 zipcode2)这很好地工作了,但是现在我正在尝试为一个附加表中的每个表创建一个包含所有统计信息的主表。我怎么说 proc sql; create table wanted_all_zips as select stats from ( 每次都被覆盖的表,或者我可以 将zipcode附加到每个表中,这样它们就不会 覆盖,但

我有多个表,所有表都包含一个州不同zipcodes的统计信息。为了做到这一点,我运行了一个循环,对它们进行了遍历,所以我已经(zipcode1 zipcode2 zipcode2)这很好地工作了,但是现在我正在尝试为一个附加表中的每个表创建一个包含所有统计信息的主表。我怎么说

proc sql; 
create table wanted_all_zips 
as 
select stats 
from ( 
每次都被覆盖的表,或者我可以 将zipcode附加到每个表中,这样它们就不会 覆盖,但我不知道如何附加每个 所以下一个邮政编码是第二行/下一行*/

  ; 
    quit;

我有很多表,我不想为每个zipcode写出来,代码可能会变得非常混乱。有没有办法从zipcode中说:我想你只是想
union all
。大概是这样的:

proc sql; 
    create table wanted_all_zips as 
        select stats 
        from ((select z.* from zipcode1) union all
              (select z.* from zipcode2) union all
              (select z.* from zipcode3) 
             ) z;

我想你只需要
联合所有人
。大概是这样的:

proc sql; 
    create table wanted_all_zips as 
        select stats 
        from ((select z.* from zipcode1) union all
              (select z.* from zipcode2) union all
              (select z.* from zipcode3) 
             ) z;

如果你有一个循环,你可以简单地在它里面做这件事


每次运行时,它都会将
have
的内容附加到一个名为
wanted

的主表中。如果有循环,只需在其中执行即可


每次运行时,它都会将
have
的内容附加到名为
wanted

的主表中,使用带有冒号修饰符的数据步骤将它们全部附加。 INDSNAME选项将标识源数据。我还想猜测,无论您在循环中做什么,都可以用另一种方法来完成,而不需要拆分数据集。标准建议是不要在SAS中分割数据,除非是空间问题

data want;
   length source source_file $256.;
   set zipcode: indsname=source ;
   source_file = source;
run;

使用带有冒号修饰符的数据步骤将它们全部追加。 INDSNAME选项将标识源数据。我还想猜测,无论您在循环中做什么,都可以用另一种方法来完成,而不需要拆分数据集。标准建议是不要在SAS中分割数据,除非是空间问题

data want;
   length source source_file $256.;
   set zipcode: indsname=source ;
   source_file = source;
run;

我有很多表,我不想为每个zipcode写出来,代码可能会变得非常混乱。有没有办法从zipcode中说:我有很多表,我不想为每个zipcode都写出来,代码可能会变得非常混乱。有没有办法从zipcode中说:通过这个选项,sas说have集合中的变量不在想要的集合中,所以它不能这样做。@JessicaWarren不应该是这样的。如果运行
proc append
base=
表不存在,则过程将创建它。每次运行
proc sql
,它都会创建一个具有相同表结构的类似输出。因此,
have
数据集没有理由包含不在
所需
数据集中的变量。您确定您的工作库中没有运行的其他代码中名为
所需的
的数据集吗?您是对的,谢谢。您知道如何添加一个列,其中该列中的每一行都将使用统计数据来自的数据表进行命名吗?PROC APPEND无法添加新列,但您可以使用下面显示的数据步骤方法进行添加。最简单的方法是将当前源表的名称存储在循环中的宏变量中(例如,
&tablename
),只需将其添加到select语句中,如下面的
“&tablename”作为source_column
使用此选项时,sas表示have集合中的变量不在所需集合中,因此它无法执行该操作。@JessicaWarren不应该是这种情况。如果运行
proc append
base=
表不存在,则该过程会创建它。每次运行
proc sql
时,它都会创建一个类似的具有相同表结构的输出。因此,没有理由说明
have
数据集包含的变量不在
所需的
数据集中。您确定您的工作库中没有运行的其他代码中的名为
所需的
的数据集吗?您是正确的,谢谢。您知道我将如何添加一个变量吗列,其中该列中的每一行都将使用统计数据来自的数据表命名?PROC APPEND无法添加新列,但您可以使用下面显示的数据步骤方法来添加新列。最简单的方法是将当前源表的名称存储在循环中的宏变量中(例如
&tablename
)只需将其添加到select语句中,如下面的
“&tablename”作为源列