예를 들어 게시판형식 같은 테이블에서 아이디별로 row를 5개이하로 추려 표시하고 싶습니다. 간단할거 같은데 영 묘안이 안떠오르네요.. 표시결과는 다음과 같습니다.
DECLARE @SEQ INT DECLARE @아이디 VARCHAR(100) DECLARE @PRE_아이디 VARCHAR(100) DECLARE @LANK INT
CREATE TABLE #TEMP_TT (SEQ INT, 아이디 VARCHAR(100), LANK INT) --임시 테이블을 만든다 DECLARE CUR_MSG CURSOR FOR
SELECT SEQ, 아이디 FROM CTEST ORDER BY 아이디, SEQ --커서를 만든다. OPEN CUR_MSG FETCH NEXT FROM CUR_MSG INTO @SEQ , @아이디 WHILE @@FETCH_STATUS = 0 BEGIN IF @아이디 = @PRE_아이디 BEGIN SET @LANK = @LANK + 1 END ELSE BEGIN SET @LANK = 1 END INSERT INTO #TEMP_TT (SEQ, 아이디, LANK) VALUES (@SEQ , @아이디,@LANK ) SET @PRE_아이디 = @아이디 FETCH NEXT FROM CUR_MSG INTO @SEQ, @아이디 END SELECT * FROM #TEMP_TT WHERE LANK <6 CLOSE CUR_MSG DEALLOCATE CUR_MSG
조금 늦은 댓글이긴 하지만, 다른 분들 위해서 올려보았습니다.
WITH List AS (
SELECT ID,SEQ,VALUE, ROW_NUMBER()OVER(PARTITION BY ID ORDER BY SEQ ASC) Tick
FROM table1
)
SELECT * FROM List WHERE Tick <=5
이렇게 사용하시면 되실 거 같습니다.