2014-07-21 1 views
3

테이블을 만들면서 ORDER을 시도했지만 SAS가 허용하지 않는 것으로 나타났습니다. 여기에 코드 여기SAS는 CREATE 문에서 ORDER BY를 허용합니까?

proc sql; 
create table test as (
select * 
from sashelp.class 
order by name); 
quit; 

내가 얻을 오류되어 있습니다 :

1383 order by name); 
     ----- 
     79 
ERROR 79-322: Expecting a). 

1383! order by name); 
        - 
        79 
ERROR 79-322: Expecting a (. 

내가 확실히 proc sort을 사용할 수는 있지만, 나는 CREATE TABLE 문서를 읽고 어떤 제한 그것보다 ORDER BY 기타에 배치 찾을 수 없습니다 권장하지 않습니다. SAS documentation은 유효한 구문으로 create . . order by을 나열합니다. 그러면 여기서 어떤 문제가 발생합니까?

By The Way. . 간단한 select . . order by

proc sql; 
select * 
from sashelp.class 
order by name; 
quit;* 

답변

3

괄호를 제거 잘 작동 :

proc sql; 
create table test as 
select * 
from sashelp.class 
order by name; 
quit; 

확실하지 왜 SAS 그들을 좋아하지 않는다 - 나는 그들이 기술적으로이하지 않은, 단지 서브 쿼리위한 것입니다 있기 때문에 생각합니다. 어쨌든 당신은 그것들을 필요로하지 않습니다.

+4

SAS에서는 Order By가 주 외부 쿼리에서만 허용됩니다. 하위 쿼리에서 주문을 수행 할 수 없습니다. 서브 쿼리에서 순서를 지정할 수있는 많은 SQL 구현과는 다릅니다. – Joe

+0

감사합니다. 사실 http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a002294522.htm 구문에 따라 괄호가 없습니다. – Buras

+1

괄호는 ' 특히 sparc이 지적한 바와 같이 파서에 대한 하위 쿼리 (즉, 명령을 내릴 수는 없습니다)를 잘못 작성했습니다. – Joe

관련 문제