如何从库中的所有表中提取一些信息?

问题描述 投票:0回答:1

如何PROC SQL从名为DATA_IN的库中提取信息?

预期信息包括:

  1. 表的名称。
  2. 表中包含的变体总数。
  3. 表中包含的总观察数。 如果表包含“Subject_ID或Visit_Num”,则将标记包含为1,否则标记为0。

我做了这样的尝试:

proc sql;
    create table table_select as
    select libname, memname, nobs, nvar
    from dictionary.tables
    where libname = 'DATA_IN'
    order by nobs descending
;

但仍然不知道如何判断一个表是否包含“Subject_ID”或“Visit_Num”列,并将其标记为“1”或“0”。

谢谢您的帮助!

sas
1个回答
1
投票

您需要一个将DICTIONARY.TABLESDICTIONARY.COLUMNS连接起来的查询

例:

proc sql;
  create table want (label='sashelp tables with a column named "name" or "MSRP"') as 
  select 
    tables.libname
  , tables.memname
  , tables.nobs
  , tables.nvar
  , not missing(mark.memname) as has_name_or_msrp
  from
    DICTIONARY.TABLES
  left join 
    (select distinct memname from DICTIONARY.COLUMNS
     where columns.libname = 'SASHELP'
       and upcase(columns.name) in ('NAME', 'MSRP')
    ) as mark
  on 
    tables.memname = mark.memname
  where 
    tables.libname = 'SASHELP' 
    and memtype = 'DATA'  /* restrict to only tables */
  order by 
    nobs descending
  ;

  data _null_;
  run;
热门问题
推荐问题
最新问题