SELECT title, type, IDENTITY(INT, 1, 1) seq INTO #temp
FROM titles
SELECT seq%cnt + 1 seq, a.type, a.title
FROM #temp a
INNER JOIN (
SELECT
MIN(type) type
, COUNT(*) cnt
FROM titles
GROUP BY type) b
ON a.type = b.type
ORDER BY a.type, seq%cnt + 1
DROP TABLE #temp
--임시테이블은 순번을 만들기 위해서 쓴 것이다..
--역시 오라클의 rownum이 없는 것이 참 아쉽다. 임시테이블을 만들지 않고서도 순번을 만들 수는 있으나
--순번을 매기는 것은 임시테이블을 사용하는 것이 부하가 더 적다. 다음의 쿼리와 I/O를 비교해 보면 알 것이다.
--2005버전은 Row_Number()함수를 이용하면 된다.
SELECT COUNT(*) seq, a.title_id, a.type
FROM titles a INNER JOIN titles b
ON a.type = b.type
AND a.title_id >= b.title_id
GROUP BY a.title_id, a.type
'개발ㅣ어플ㅣ회사 > 개발ㅣSQL' 카테고리의 다른 글
MS-SQL FK 삭제하기 (0) | 2010.04.28 |
---|---|
MS-SQL2000에서 논리 데이터 베이스 파일 이름 변경하기 (0) | 2010.04.22 |
MSSQL - 테이블에 PK 추가하는 쿼리 (0) | 2009.11.06 |
MS-SQL 사용자 프로세스에서 부동 소수점 예외가 발생했습니다. 현재 트랜잭션이 취소됩니다. (0) | 2008.11.28 |
MS-SQL성능[펌] (0) | 2006.05.18 |