Sql эквивалент в SAS - PullRequest
       7

Sql эквивалент в SAS

0 голосов
/ 20 ноября 2018

У меня есть код, такой как ниже в SQL (много больше и не только, но я просто хотел перечислить несколько), я новичок в SAS и немного знаю Proc SQL и т.д., изучая и изучая каждый день,

 Select * from table
 Where date=‘20180112’ 
 and type=‘apple’ and location=‘dc’ and not                    
 (columnName)in(‘a’,’b’) And lat=‘ten’

Я не могу понять sas эквивалент выше sql как ниже.Может кто-нибудь, пожалуйста, объясните код SAS, если часть, а затем выполните

  Data sample;
  Set sourcetble; 
 If date=‘20180112’ and type=‘apple’
  And location=‘dc’ then do;
  Blah1=‘rain’
  Blah2=‘something else’
 If columnName in(‘a’, ‘b’) and lat=‘ten’ Then do;

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

В отличие от запроса SQL, шаг данных SAS приведет к созданию нового набора данных. Если вам не нужно иметь новый набор данных, вы можете использовать «data _null_;». В качестве альтернативы существуют процедуры SAS, которые просто отображают набор данных, такой как SQL "select".

«Набор» в SAS эквивалентен «от» в SQL: он определяет базовые наборы данных, из которых вы строите новый набор данных.

По умолчанию на шаге данных SAS сохраняются все переменные наборов данных "set". Это эквивалентно «select *» в SQL. Если вам нужны только некоторые переменные, вы можете использовать операторы «keep» и «drop» в SAS.

Операторы "where" и "and" / "or" работают аналогично в SAS и SQL, но с немного другим синтаксисом.

0 голосов
/ 20 ноября 2018

if … then в шаге данных не соответствует SQL, показанному в вопросе. Условное присваивание в SQL выполняется с помощью оператора case.

Так что шаг DATA, такой как

data want;
  set have;
  … 
  if date="20180112" and type="apple" and location="dc" then do;
    Blah1="rain";
    Blah2="something else";
  end;

будет соответствовать SQL

Proc SQL;
  create table want as
  select …
    , case when date="20180112" and type="apple" and location="dc"
        then "rain"
        else ""
      end as Blah1
    , case when date="20180112" and type="apple" and location="dc"
        then "something else"
        else ""
      end as Blah2
  from
    have
  … 
  ;

Для случая, когда для какого-либо алгоритма необходимо назначить несколько переменных одновременно, когда соблюдены некоторые критерии (if логика):

  • Шаг данных имеет синтаксис do; … end;, который может содержать несколько операторов присваивания.
  • Оператор выбора SQL может назначать только одну переменную для каждой логической оценки (case statement), таким образом, логический код должен повторяться для каждой присваиваемой переменной на основе критериев.
0 голосов
/ 20 ноября 2018

Это только подмножества на основе значений и переменных в операторе WHERE.

Data sample; 
   set table;
   WHERE date='20180112' and type='apple' And location='dc' 
         and columnName in (‘a’, ‘b’) and lat=‘ten’;
   <other optional code>;
   run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...