Как извлечь некоторую информацию из всех таблиц в библиотеке? - PullRequest
0 голосов
/ 12 апреля 2019

Как PROC SQL извлечь информацию из библиотеки с именем DATA_IN ?

Ожидаемая информация, в том числе:

  1. The имя таблиц.

  2. Всего количество вариантов , содержащихся в таблицах.

  3. Итого номер наблюдения содержится в таблицах.

    Если таблица содержит "Subject_ID or 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 or Visit_Num» и пометить ее «1» или «0».

Спасибо за помощь!

1 Ответ

1 голос
/ 12 апреля 2019

Вам нужен запрос, который объединяет DICTIONARY.TABLES с DICTIONARY.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;
...