중복제거된 목록에서 항목별 TOP 1 (?)
MS-SQL 에서 중복제거는 DISTINCT 키워드로 가능하다.
MS-SQL 에서 제일 위에 있는 데이터를 보기 위해서는 TOP (숫자) 키워드로 가능하다.
(괄호안의 숫자는 상위 몇개까지 보여질지 결정하는 숫자)
[테스트 환경]
1.MS-SQL
2.1000라인의 사용자 정보 데이터(더미 데이터) (www.mockaroo.com)
3.사번, 이름, 이메일, 성별, 부서코드 등의 컬럼이 있지만, 이름과 부서코드 컬럼만 사용
4.부서코드는 D001 부터 D012 까지 코드가 있음
[목표]
각 부서코드로 조회시 제일 위에 나오는 사용자에게 팀장 권한을 주려고 함.
(말이 안되는 상황이지만, 어디까지나 임의의 데이터로하는 실습이니까..)
SELECT TOP 1 [이름] FROM [사용자테이블] WHERE [부서코드] = 'D001' UNION ALL
SELECT TOP 1 [이름] FROM [사용자테이블] WHERE [부서코드] = 'D002' UNION ALL
SELECT TOP 1 [이름] FROM [사용자테이블] WHERE [부서코드] = 'D003' UNION ALL
.....
SELECT TOP 1 [이름] FROM [사용자테이블] WHERE [부서코드] = 'D012'
보통 회사의 부서가 수백/수천개가 아니니까 이런식으로 해도 되겠지만,
뭔가 좀..
SELECT
[부서].[부서코드]
,(SELECT TOP 1 [이름] FROM [사용자테이블] WHERE [부서코드] = [부서].[부서코드]) AS Name
FROM
( SELECT
DISTINCT [부서코드]
FROM
[사용자테이블] ) AS [부서]
ORDER BY
[부서].[부서코드]
원하는대로 결과가 나왔다.
혹시 지나가다 더 좋은 방법이 있으신 분들은 알려주시기 바랍니다.
'MS-SQL' 카테고리의 다른 글
Stored Procedure (0) | 2018.04.23 |
---|---|
MS SQL Server 컬럼 이름 변경 (0) | 2017.11.16 |
오픈소스 데이터베이스 관리 툴 (0) | 2017.09.17 |
LOG 파일 용량 줄이기 (0) | 2017.08.07 |
'sa' 계정으로 로그인 안됨 (0) | 2017.01.16 |