Синтаксис SAS, ожидающий SELECT

Я не знаю, как исправить синтаксис внутри моего proc sql в SAS. Мой код выглядит примерно так:

proc sql;
    create table HI
    as select [columns]
from [table]
where column1 not in ('..', '..', '..') /*This has no errors*/
AND column2 in ('...', '...', '...') /*This has no errors*/
AND column3 in (('...','...','...',.......)
    or column3 like ('J%')) /*This AND statement gives the errors*/

Первая ошибка заключается в том, что он ожидает SELECT и подчеркивает первый '...' для условия в столбце3. (Ошибка 79-322)

Следующая ошибка находится в конце условий в столбце 3 перед оператором ИЛИ. Он говорит, что ожидает одно из следующего: строка в кавычках, !, !!, &, *, **, +, ',', -, /, ‹, ‹=, ‹>, =, >, > =, ?,..... (Ошибка 22-322)

Затем есть еще две ошибки, говорящие о том, что символ не распознан, и еще одна, что оператор будет проигнорирован. -- но я полагаю, что они будут исправлены, если другие будут исправлены.

Любая помощь приветствуется :)


person resonance1    schedule 20.11.2018    source источник


Ответы (3)


изменить последние 2 строки как

 AND (column3 in ('...','...','...',.......)
or column3 like ('J%')) 

/* example*/
 proc sql;
create table HI
as select *
 from sashelp.cars
 where make not in ('Acura', 'Audi') /*This has no errors*/
  AND Type in ('SEDAN', "Sports") /*This has no errors*/
 AND (Origin in ('Asia','Europe')
  or Origin like ('U%')) ;
person Kiran    schedule 20.11.2018

Использовать оператор поиска

AND column3 in (('...','...','...',.......)
or (find(column3,J)>0 and substr(column3,1,1)='J') /*Making sure first char is J*/
person Rhythm    schedule 20.11.2018
comment
@Kiran, прошу прощения, да, это работает ... как-то я использовал неправильный синтаксис - person Rhythm; 21.11.2018

Добавьте пару круглых скобок для условия столбца3, подобного этому

AND (column3 in (('...','...','...',.......)
or column3 like ('J%'))) /*This AND statement gives the errors*/
person Shuying WEI    schedule 23.11.2018