SAS PROC SQL生成笛卡尔积

时间:2015-09-07 08:45:19

标签: sas proc-sql

我正在学习PROC SQL,并想知道为什么以下两个结果不同:

我有两个数据集如下

data data1;
    input name $ value;
    datalines;
a 1
b 3
c 5
;
run;

data data2;
    input name $ value;
    datalines;
A 2
B 4
C 6
D 8
;
run;

1,方法ONE

proc sql;
    select * 
    from data1, data2
    ;
quit;

2,方法二

proc sql noprint;
    create table output as
    select * from data1, data2
    ;
quit;

enter image description here

1 个答案:

答案 0 :(得分:1)

在方法1中,您只是显示数据。所以没问题。

但是在方法2中,您正在尝试创建一个表"输出"。您是否注意到数据集中的变量名称" data2"?这是名称和价值。这些变量已存在于data1中。

您将收到如下警告:

警告:文件WORK.OUTPUT上已存在变量名称。

警告:文件WORK.OUTPUT上已存在变量值。

只需重命名其中一个数据集中的变量,然后尝试执行代码。你会得到相同的结果。