Proc sql:将一个表中的单行复制到另一个表中的所有行



我有两个表。

表 A

a b
----
1 2 
3 4

和只有一行的表 B

c d e
------
5 6 7

我想创建一个看起来像这样的新表:

a b c d e
----------
1 2 5 6 7
3 4 5 6 7

即将单行从 B 复制到 A 中的所有行。 注意:使用 SAS 进程 sql。

首先在TableA中添加 3 列:

ALTER TABLE TableA ADD c INTEGER;
ALTER TABLE TableA ADD d INTEGER;
ALTER TABLE TableA ADD e INTEGER;

然后用TableB中的值更新TableA

UPDATE a
SET a.c = b.c, a.d = b.d, a.e = b.e
FROM TableA a CROSS JOIN TableB b;

请参阅演示。
结果:

| a   | b   | c   | d   | e   |
| --- | --- | --- | --- | --- |
| 1   | 2   | 5   | 6   | 7   |
| 3   | 4   | 5   | 6   | 7   |

数据步骤?

data want;
set A;
if _n_ = 1 then set B;
run;

将忽略插入表 A 从表 B 中选择 *;所以基本上我正在合并两个表,考虑到表 DDL 是相同的。

最新更新