首页 > 解决方案 > 用其他表中的数据覆盖表中的所有值

问题描述

我正在尝试用表 B 中的数据覆盖表 A 中的数据。

主要目标是保留 A 列中每列的格式并使用 B 列中的数据来完成。

Insert Into work.table_A
Select work.table_B
From work.table_B

提前致谢。

标签: sqlsasproc-sqlenterprise-guide

解决方案


为什么不直接改造桌子?请注意,SAS 数据集不会重用通过删除观察创建的空间,因此如果您删除然后插入多次,您的数据集将占用更多磁盘空间。

data a;
  set a(obs=0) b;
run;

您可以使用带有 MODIFY 语句的数据步骤来删除记录并插入新记录。

data A;
  do until (eof1);
    modify A end=eof1;
    remove;
  end;
  do until(eof2);
    set B end=eof2;
    output;
  end;
run;

或者,如果您愿意,也可以使用 SQL,只需确保 A 和 B 具有相同的变量,或者您知道如何从 B 中的变量创建 A 所需的变量。

proc sql;
  delete * from A;
  insert into A select * from B;
quit;

推荐阅读