Храните только записи в таблице 1, которые соответствуют уникальному значению в таблице 2 - PullRequest
0 голосов
/ 11 апреля 2019

Я работаю с текущей версией SAS Enterprise Guide.

У меня есть данные в двух таблицах;Таблица 1 содержит список номеров счетов, а таблица 2 содержит отдельные записи для каждого номера счета и каждого месяца.Номер учетной записи является уникальным значением в таблице 1, но повторяется в таблице 2 в зависимости от того, сколько месяцев учетная запись активна.В таблице 2 также содержится больше уникальных номеров счетов, чем в таблице 1, поэтому мне нужно создать запрос, в котором хранятся только записи в таблице 2, для которых номера счетов указаны в таблице 1.

Таблица 1 представляет собой список уникальныхномера счетов, на которых я хочу провести дальнейший анализ.Я хочу использовать этот список, чтобы отфильтровать нежелательные номера счетов из гораздо большего списка в Таблице 2.

Таблица 1 - это список уникальных номеров счетов, по которым я хочу провести дальнейший анализ.Я хочу использовать этот список, чтобы отфильтровать нежелательные номера счетов из гораздо большего списка в таблице 2.

Ответы [ 3 ]

0 голосов
/ 11 апреля 2019

Обычный способ:

proc sql noprint;
  create table Rst as 
  select * from Tab2
  where Account in (
    select distinct Account from Tab1
  )
 ;
quit;

Если имена переменных одинаковы как для Tab1, так и для Tab2, тогда intersect оценка будет быстрее.

0 голосов
/ 16 июля 2019

Если я правильно понял, ваша таблица 2 содержит информацию за несколько дат;Поэтому, если вам нужны последние данные для каждого номера учетной записи из таблицы 1, вам необходимо:

  1. Запустить построитель запросов из таблицы 2, указав МАКС для каждой даты, например, запросснимок экрана строителя

  2. Затем просто объедините 2 таблицы по номеру счета, используя INNER join - он сохраняет только те записи, которые появляются в обеих таблицах

0 голосов
/ 11 апреля 2019

Вы можете достичь этого разными способами. Я хотел бы использовать proc sql: into предложение для создания макропеременной для списка номеров счетов из Table1:

proc sql;
select distinct account_no into: tab1_act_list separated by "," from table1;
quit;

data table2_temp;
 set table2;
 if account_no in(&tab1_act_list) then delete; /*Or whatever you want to do with these obs*/
run;

В качестве альтернативы, вы можете использовать Merge, sql-joins.

...