Полностью определите имя столбца, используя синтаксис table-name.column
@ Tester_Y, Сообщение об ошибке
ERROR: The NAME keyword will have a constant value for all rows in a query.
It is not supported on the ORDER BY or GROUP BY clauses.
равнони с кем я не сталкивался раньше.Эти виды "что за звук?"ошибки могут возникать в сеансах SAS, в которых выполняется код с помощью шага DATA call execute
или в сложном коде, сгенерированном макросами, включая нетипичное цитирование макросов.
Автор утверждает, что ошибка повторяется при перезапусках сеансов SASи в начале нового сеанса.Это важно, потому что существует небольшая вероятность того, что предыдущий код усложнит попытку запроса.
Особенность в том, что name
не является зарезервированным словом в Proc SQL
, и код не демонстрирует ошибочные точки с запятой.Несмотря на это, пример кода OP и ошибка указывают, что Proc SQL
выполняет синтаксический анализ операторов (в сеансе Tester_Y) так, что он считает NAME
ключевым словом.
Решение для Tester заключается в полной квалификации имени столбцаиспользуя синтаксис table-name.column
В следующем примере кода не имеет такую же ошибку, как указано в OP, что заставляет меня думать, что тестерследующие вероятные подозрения: какой-то скрытый код (соединение autoexec / EG), проблема с кодировкой, системный параметр или проблема, связанная с платформой.
data _null_;
file "c:\temp\p1.txt";
put "Name,Order_Value";
put "John,5";
put "John,11";
put "John,7";
put "Mark,5";
put "Mark,7";
run;
proc import datafile='c:\temp\p1.txt' dbms=csv replace out=p1;
getnames = yes;
run;
PROC SQL;
SELECT name, SUM(order_value) AS Total_Spent
FROM p1
GROUP BY name;
QUIT;
PROC SQL DQUOTE=ANSI;
SELECT "name", SUM(order_value) AS Total_Spent
FROM p1
GROUP BY "name";
QUIT;