首页 > 解决方案 > 如何从库中的所有表中提取一些信息?

问题描述

如何 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

解决方案


您需要一个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;

推荐阅读