繁体   English   中英

如何在 SAS 企业指南中仅使用 PROC SQL select char 变量?

[英]How to select only char variables with PROC SQL in SAS Enterprise Guide?

我有以下代码:

PROC SQL INOBS=10 OUTOBS=10;
   CREATE TABLE WORK.FREQUENCY_&ColumnName AS 
   SELECT t1.&ColumnName, 
            (COUNT(t1.&ColumnName)) AS COUNT_of_&ColumnName
      FROM &libname..&tblname t1
      GROUP BY t1.&ColumnName
      ORDER BY COUNT_of_&ColumnName DESC;

此代码有效,但使用此代码我选择了所有类型的变量,但是只有当变量是 CHAR 时,我才想 select。

有没有办法用一个简单的 where clausule 创建这个条件? 还是我需要创建一个“如果条件”? 如果是,我该如何创建它?

谢谢你!

我现在没有可用的 SAS 安装,但此代码应该可以工作

data _null_;
  /*
  The relevant columns are probably named differently;
  Check the table sashelp.vcolumn what the values in COLTYPE for character variables actually are
  Don't know exactly out of my head
  */
  set sashelp.vcolumn(where=(MEMNAME eq 'MY_TABLE' and COLTYPE in ('CHAR', 'VARCHAR'))) end=eof; 
  
  attrib COLNAMES format=$1000.;
  retain COLNAMES;
  
  /*
    the following two lines concatenate all extracted column names;
    choose one of the two
  */
  /*concatenate all variable names in a string using || operator*/
  COLNAMES = compbl(COLNAMES) || ', ' || compbl(COLNAME);
  /*or via function catx*/
  colnames=catx(', ',colnames,colname);

  /*define a macro variable to hold all determined columns*/
  if eof then do;
    call symput('M_COLNAMES', compbl(COLNAMES));
  end;
run;

/*print all found columns*/
%put Character columns: &M_COLNAMES.;

然后,您可以在 select 语句中使用宏变量 M_COLNAMES。 这应该让您了解如何做到这一点。

不要犹豫,提出进一步的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM