如何在不从现有 table 中选择的情况下使用 `Proc SQL` 创建 table

How to create a table using `Proc SQL` without selecting from existing tables

select from dual”的 SAS 版本是多少?我想使用 Proc SQL 创建一个 table 而不从现有的 table 中进行选择。例如。基本上我想要这样的东西:

PROC SQL;
  CREATE TABLE tmptable AS
  SELECT 1 AS myvar FROM dual;
QUIT;

这不起作用。我有什么选择?

我认为 SAS 中的 DUAL 没有类似 select 的东西。 但如果这对你有帮助,你可以试试:

proc sql inobs=1; /* limit read to only one observations */
  select 1 as myvar
  from sashelp.table /* or any table desired */
  ; 
quit;

INOBS=1 确保您只从 sashelp.table 读取一行,因此您只有一个结果。

如您所说,SAS Proc SQL 没有预制 DUAL table.

您可以改用 CREATEINSERT 语句。

示例

proc sql;
  create table want (x num);

  insert into want values (1);

  insert into want 
    values(2)
    values(3)
  ;
quit;

或首先创建您自己的 DUAL(也许如果将 SQL 代码迁移到 SAS Proc SQL

proc sql;
  create table dual (dummy char(1)); insert into dual values ('X');

  CREATE TABLE tmptable AS
  SELECT 1 AS myvar FROM dual;
quit;