리스트를 뽑아내면서
같은 아이디의 글은 2개까지만 나오게 하고 싶은데
이걸 어떻게 잡아내야 할지 모르겠습니다.
1개로만 제한하면 group를 쓰면 되니까 간단한데..
저 숫자를 늘려보려고 하니 어떻게 잡아내야 할지..
a라는 사람이 쓴글은 5개 있고 b라는 사람이 쓴글은 1개 있고 c라는 사람이 쓴글은 3개 있을때
리스트에서는
a
c
b
a
c
뭐 이런식으로 노출되게 하고 싶은데 말이죠.
Comment 4
-
폭주
2013.09.25 11:23
WITH cte_Temp (Idx,UserID,Title)AS(SELECT 1,'A','테스트1'UNIONSELECT 2,'C','테스트1'UNIONSELECT 3,'B','테스트1'UNIONSELECT 4,'A','테스트2'UNIONSELECT 5,'C','테스트2'UNIONSELECT 6,'A','테스트3'UNIONSELECT 7,'C','테스트3'UNIONSELECT 8,'A','테스트4'UNIONSELECT 9,'A','테스트5')SELECT UserID,TitleFROM(SELECT Idx,UserID,ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY Idx) AS UserSeq,TitleFROM cte_Temp) AS TWHERE userSeq<=2ORDER BY IDX; -
카루카루
2013.09.25 11:42
sql이 2000이라서 rownumber 이 지원 안하는걸로 아는데.. ㅠㅠ 다른방법은 없을까요
-
폭주
2013.09.25 12:00
WITH cte_Temp (Idx,UserID,Title)AS(SELECT 1,'A','테스트1'UNIONSELECT 2,'C','테스트1'UNIONSELECT 3,'B','테스트1'UNIONSELECT 4,'A','테스트2'UNIONSELECT 5,'C','테스트2'UNIONSELECT 6,'A','테스트3'UNIONSELECT 7,'C','테스트3'UNIONSELECT 8,'A','테스트4'UNIONSELECT 9,'A','테스트5')SELECT UserID,TitleFROM(SELECT A.Idx,A.UserID,COUNT(B.idx) AS UserSeq,A.TitleFROM cte_Temp AS AJOIN cte_Temp AS BON A.UserID=B.UserID AND A.idx>=B.IdxGROUP BY A.Idx,A.UserID,A.Title) AS TWHERE UserSeq<=2ORDER BY IDX; -
카루카루
2013.09.25 14:26
감사합니다.. 응용해 보겠습니다.