개발/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

http://www.sqler.com/index.php?mid=bSQLQA&listStyle=webzine&page=10&sort_index=regdate&order_type=desc&category=128529&document_srl=479019


반응형