반응형
SELECT DISTINCT ORDER BY 절 사용해서 원하는 결과를 뽑아내 보자
위와 같이 이름과 나이 필드로 구성된 테이블이 있다.
[목표]
이름 필드의 값에서 중복을 제거하고 결과를 뽑아내려고 한다. 단, 이때 정렬 기준은 나이순으로 한다.
SELECT DISTINCT [name]
FROM TABLE_A
중복이 제거된 결과가 나왔지만.. 정렬이 나이 순서가 아닌 이름 순서로 되어있다.
SELECT DISTINCT [name]
FROM TABLE_A
ORDER BY [age] ASC
정렬을 위해 ORDER BY 절을 추가해봤는데 다음과 같은 오류 메시지를 뱉어냈다.
SELECT DISTINCT가 지정된 경우에는 ORDER BY 항목이 SELECT 목록에 나타나야 합니다.
하지만 ORDER BY 항목이 SELECT 절에 추가하게 된다면, 이름값의 중복 제거가 정상적으로 되지 않는다.
아래처럼 말이다.
SELECT DISTINCT [name], [age]
FROM TABLE_A
ORDER BY [age] ASC
[해결]
MIN(AGE)를 활용하면 원하는 결과를 출력할 수 있다.
SELECT DISTINCT [name], MIN(AGE)
FROM TABLE_A
GROUP BY [name]
ORDER BY MIN(AGE) ASC
반응형
'프로그래밍 > MSSQL' 카테고리의 다른 글
[MSSQL] TRIM/RTRIM/LTRIM 문자열 공백 및 지정 문자 제거 (0) | 2020.09.19 |
---|---|
[MSSQL] GETDATE 날짜함수 (YEAR, MONTH, DAY) (0) | 2020.09.16 |
[MSSQL] QUOTENAME 구분 식별자 (0) | 2020.06.01 |
[MSSQL] DECLARE 변수 선언 (0) | 2020.05.30 |
[MSSQL] 문자열이나 이진 데이터는 잘립니다 (2) | 2020.02.05 |