반응형
문제
해당 데이터를 날짜컬럼(CreDate)을 기준으로 오름차순으로 정렬하되, Name컬럼의 값이 동일한 데이터는 묶어서 보여주자
즉, 가장 작은 날짜를 가진 데이터를 최 상단에 보여주고
해당 데이터의 Name 값과 동일한 데이터가 있다면!
그 데이터가 다음 ROW에 보여진다. (다수일 경우 해당 데이터끼리 오름차순)
해당 Name의 데이터를 모두 나타낸 후
다른 Name 값 중에서 가장 작은 날짜가 다음 ROW가 된다.
이하 반복..
원본 데이터
IDX |
Name |
CreDate |
1 |
A |
2017-01-01 |
2 |
C |
2017-01-02 |
3 |
C |
2017-01-03 |
4 |
A |
2017-01-03 |
5 |
B |
2017-01-03 |
6 |
B |
2017-01-04 |
7 |
C |
2017-01-04 |
원하는 결과
IDX | Name | CreDate |
1 | A | 2017-01-01 |
4 | A | 2017-01-03 |
2 | C | 2017-01-02 |
3 | C | 2017-01-03 |
7 | C | 2017-01-04 |
5 | B | 2017-01-03 |
6 | B | 2017-01-04 |
정답 쿼리
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | SELECT B.IDX, B.Name, B.CreDate FROM ( SELECT *, ROW_NUMBER() OVER(ORDER BY IDX ASC) AS 'row2' FROM ( SELECT MIN(IDX) AS 'IDX', Name FROM #TABLE1 GROUP BY Name ) A ) A INNER JOIN ( SELECT ROW_NUMBER() OVER (PARTITION BY Name ORDER BY IDX ASC) AS 'row', * FROM #TABLE1 ) B ON A.Name = B.Name ORDER BY A.row2, B.row ASC | cs |
반응형
'프로그래밍 > MSSQL 정리필요' 카테고리의 다른 글
[DB_MSSQL] 테이블 명세서 출력 쿼리 (0) | 2017.02.23 |
---|---|
[DB_MSSQL] sp_addextendedproperty 주석 (테이블/컬럼) (0) | 2017.02.22 |
[DB_MSSQL] INDEX 컬럼 (WHERE IDX=1+1 vs WHERE IDX-1=1) (0) | 2017.02.15 |
[DB_MSSQL] 프로시저 실행 결과 테이블에 입력 (0) | 2017.02.14 |
[DB_MSSQL] return, break, goto (0) | 2017.02.14 |