개발/SQL SERVER
TOP 그리고 ROW_NUMBER
whatever , whoever
2018. 9. 11. 14:21
반응형
일자 단위로 각 결과값을 배분하고 싶어요
처음에는 TOP를 생각했지만 이건 전체 ROW에 대한 것이지
일자별로 나뉘어서 정렬해주지 않는다
그래서 일자별로 ROW_NUMBER를 정의하고 , BETWEEN으로 걸어버리면 되지 라고 생각한 쿼리
SELECT tmp.blank,
tmp.jb_name ,
tmp.sy_name ,
tmp.d_data ,
tmp.d_date ,
tmp.d_time ,
tmp.d_stats ,
tmp.m1_minornm ,
tmp.m2_minornm ,
tmp.jb_code ,
tmp.sy_code ,
tmp.errtype ,
tmp.errok
FROM (
SELECT '' AS blank ,
Row_number() OVER
(partition BY CONVERT(VARCHAR(10) , CONVERT(DATETIME , d_date),120)
ORDER BY CONVERT(VARCHAR(10) , CONVERT(DATETIME , d_date),120) ASC) AS rownum ) ) tmp
WHERE rownum BETWEEN 1 AND 5
ORDER BY tmp.d_date ASC, tmp.d_time ASC
그냥 원래 쿼리에 ROW_NUMBER 정의하고 SELECT 로 한번 더 싸서 BETWEEN 걸어버리면 끝
참고 URL
반응형