2017-04-12 11 views
1

보기를 작성하기 위해 System i 네비게이터를 사용 중입니다. 보기를 creat에 확인 버튼을 클릭하면, 나는 다음과 같은 오류가 무엇입니까오류 받기 : AS400보기를 작성할 때 "키워드 ORDER가 필요하지 않음"

SELECT MOMAST.ORDNO, MOMAST.FITEM 
    FROM AMFLIBT.MOMAST AS MOMAST 
    WHERE MOMAST.FITEM LIKE 'POS-%' 
    GROUP BY MOMAST.ORDNO,MOMAST.FITEM 
    ORDER BY MOMAST.FITEM,MOMAST.ORDNO 

: 나는 문에 의해 ORDER를 제거하면

SQL0199] Keyword ORDER not expected. Valid tokens: . Cause . . . . . : The keyword ORDER was not expected here. A syntax error was detected at keyword ORDER. The partial list of valid tokens is .

을보기가되고 내보기는 매우 간단합니다 성공적으로 생성되었습니다.

ORDER BY 문으로 내보기를 만들어야하는데 오류없이이 작업을 수행하려면 어떻게해야합니까?

+0

보기에서 'ORDER BY'는 최상위 * n * 행을 선택하거나 * n * 행으로 제한 할 때만 유효합니다. 그렇지 않으면 틀린 것입니다. 보기에서 **를 ** 선택할 때'ORDER BY'를 사용하십시오. – JohnHC

+0

이것에 대해 완전히 설명 된 답변을 추가했습니다. –

+0

SQL 테이블과 뷰에 순서가 없습니다. 인덱스가 있습니다. ORDER BY에 대한인지 된 필요성에 대해 별도의 질문을 할 수 있으므로 대안이 제시 될 수 있습니다. – user2338816

답변

4

뷰는 관계형 테이블이며 관계형 모델은 테이블을 행 집합으로 정의합니다. 집합은 순서대로 정렬되지 않으므로 정의에 따라 뷰의 행 역시 정렬되지 않습니다. 따라서 뷰 정의에서 ORDER BY 절은 의미가 없습니다. SQL 표준 (SQL : 2003)은 CREATE TABLE 문에서 허용되지 않는 것처럼 CREATE VIEW 문에서 subselect에 ORDER BY 절을 허용하지 않습니다.

귀하의 경우에는 ORDER BY 문없이보기를 작성하고이 명령문을 사용하여보기를 선택할 때 (작성하는 동안이 아님) 사용하는 것이 좋습니다.

+0

"Order By"절을 사용하지 않고 뷰를 생성하는 것도 좋습니다. – danny117