WORK/DB

TOP 또는 FOR XML을 함께 지정하지 않는 한 뷰,하위 쿼리 및 공통 테이블 식에서 ORDER BY 절을 사용할 수 없습니다.

im 수캥이 2020. 1. 29. 13:22

 

MSSQL 에서 ORDER BY 실행 시 이런 에러를 볼 수 있다.

이런 에러를 간단하게 해결해 보자.

 

SELECT

    T.*

FROM(

    SELECT

         USER_ID

       , USER_NM

    FROM TB_USER_INFO

    ORDER BY USER_NM 

)T

 

위와같은 쿼리를 실행 했을 경우 

TOP 또는 FOR XML을 함께 지정하지 않는 한 뷰, 인라인 함수, 파생 테이블, 하위 쿼리 및 공통 테이블 식에서 ORDER BY 절을 사용할 수 없습니다.

라는 에러가 발생 할 것이다.

 

이럴때 해결방법은 아래와 같이 하위쿼리 안에  TOP 100 PERCENT 를 추가하면 된다.

 

SELECT

    T.*

FROM(

    SELECT

        TOP 100 PERCENT

         USER_ID

       , USER_NM

    FROM TB_USER_INFO

    ORDER BY USER_NM 

)T

 

 

위 방법은 100개이상 데이터를 가져올 수 없기 때문에 아래와 같이 사용하는게 바람직 하다.

 

SELECT

    T.*

FROM(

    SELECT

         USER_ID

       , USER_NM

       , ROW_NUMBER() OVER(ORDER BY USER_NM)  AS ROWNUM

    FROM TB_USER_INFO

    --ORDER BY USER_NM 

)T