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
'WORK > DB' 카테고리의 다른 글
mysql 프로세스 확인 및 kill 하기 (0) | 2022.11.29 |
---|---|
오라클 콤마를 기준으로 가로 또는 세로로 (열, 행) 컬럼 추가하기 (0) | 2020.06.16 |
java에서 엔터값 넣어 DB 저장하기 (0) | 2019.09.09 |
테이블명 변수로 보내서 select 하기 (동적 SELECT ) (0) | 2019.09.02 |
mssql merge 문장 예제 (0) | 2019.05.13 |