Использование макропеременной SAS и привязка ее к оператору контейнера в Proc SQL

У меня есть стол под названием Таблинг.

Name                  Number
Price A               10
Price B               11
Quantity A            12
Quantity B            13

Как мне написать фрагмент кода Proc SQL, в котором я создаю переменную Saying %let Variable = "Price", а затем говорю что-то вроде этого

Я создаю таблицу под названием "Выбор из Таблинга"

Proc SQL;
Create Table Selection As
Select * 
From Tabling
Where Name Contains %Variable;
Quit;

Мне нужно, чтобы Proc SQL связался с макро-переменной без явного указания «Цена» в коде SQL.

Пожалуйста, помогите мне с этим. Заранее спасибо.


person cordelia    schedule 31.07.2015    source источник
comment
Пожалуйста, используйте CTRL + K для форматирования текстового кода.   -  person stat    schedule 31.07.2015


Ответы (1)


Вы ищете макропеременную, созданную вашим кодом:

%let variable = Price;

Пожалуйста, удалите эти "", иначе они будут частью вашей макро-переменной (переменная должна содержать Price, а не "Price", это не код шага данных, это макроязык).

Ваша макропеременная будет востребована с использованием амперсанда, а не процента. Следовательно, у вас не будет Where Name contains %variable;, но where Name contains "&variable";.

Также рассмотрите возможность увеличения каждой строки, сравнение строк чувствительно к регистру, «Цена» отличается от «price», поэтому вы можете использовать where upcase(name) contains upcase("&variable");.

Вам серьезно нужно прочитать книгу или руководство по программированию на макроязыках, чтобы понять, что вы делаете. Дайте мне знать, если вам потребуются дополнительные пояснения.

person stat    schedule 31.07.2015
comment
Спасибо большое за вашу помощь. Буду следовать вашим советам относительно форматирования и программирования на макроязыке. - person cordelia; 01.08.2015