PROC SQL has some ANSI standard reserved words such as USER that cannot be used without renaming it or using the DQUOTE = ANSI option according to this web site
The first SQL query below fails because "the USER keyword will have a constant value for all rows in a query". The second query works but requires the DQUOTE = ANSI option and you must double quote the reserved word.
I did not want to quote or rename a column. Through some trial and error I figured out that using a fully qualified table.column name was the solution that worked best for me.
data x ; do user = 'Billy', 'Joe', 'Bob' ; do i = 1 to 10 ; output ; end ; end ; run ; proc sql ; create table x1 as select user , count(*) as cnt from x group by user ; reset dquote = ansi ; create table x2 as select "user" , count(*) as cnt from x group by "user" ; create table x3 as select x.user , count(*) as cnt from x group by x.user ; quit ;