SAS PROC SQL 生成笛卡尔积

SAS PROC SQL Generating a Cartesian Product

我正在学习 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,方法一

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

2、方法二

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

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

但是在方法 2 中,您正在尝试创建 table "output"。您是否注意到数据集 "data2" 中的变量名称?它是名称和价值。这些变量已经存在于 data1.

您将收到如下警告:

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

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

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