通过连接SAS(sql)创建表

时间:2017-02-16 15:23:58

标签: sql sas

有这个代码

data &OUT_DATA.;
set &IN_DATA_ORIGINAL_RISK_SCEN.
work.RISK_SCENARIOS_FROM_CF_TO_LOAD(drop=REPORTING_DT
HORIZON_TIME_PERIOD_CNT);
run

我理解的是,它通过将OUT_DATADATA_ORIGINAL_RISK_SCEN连接来创建表RISK_SCENARIOS_FROM_CF_TO_LOAD。 但是这两个表的变量是相同的,所以我不理解它的作用,假装在OUTPUT表上的值是RISK_SCENARIOS_FROM_CF_TO_LOAD的值。

你可以给我一些帮助吗?感谢。

1 个答案:

答案 0 :(得分:1)

set语句中的两个数据集将这些行附加在一起 ​​- 因此,如果第一个上有1000行而第二个上有400行,则最终输出上会有1400行。如果它们具有相同的变量,则最终具有该组变量;如果还有其他变量,那么 数据集上的所有变量都会显示在最终变量上,并且会填充来自没有该变量的数据集的行的缺失。

例如:

data class;
  set sashelp.class
      sashelp.class(where=(sex='M'));
run;

将男性追加到完整的类数据集中,因此它们在最终输出中存在两次;总共29行(主数据集19个,男性10个),相同的5个变量。

data class_cars;
  set sashelp.class
      sashelp.cars
  ;
run;

此数据集没有任何意义,但它显示了当您有两个具有不同变量的数据集时会发生什么。

如果您只看到一个数据集中的行,那么您要么有一些条件要删除行,要么在其中一个输入数据集中没有行。