ms sql 쿼리 질문 0 2 1,036

by 라슈 [SQLServer] [2014.07.21 11:12:02]


예를들어서

ID 일시 시작시간 종료시간
1 20140701  09 11
2 20140701  09 10
3 20140701 10 12
4 20140702 09 12

라는 테이블이 있을때

ID 1은 20140701   09시 1건, 10시 1건, 11시 1건

ID 2는 20140701   09시 1건, 10시 1건

ID 3은 20140701   10시 1건, 11시 1건, 12시 1건

ID 4는 20140702   09시 1건, 10시 1건, 11시 1건, 12시 1건

이런식으로 정리해서 시간별 사용량을 통계로 나타낼려고 하는데 쿼리로 가능한가요??

결과

일시 09 10 11 12 ....
20140701 2 3 2 1  
20140702 1 1 1 1  

 

by 마농 [2014.07.21 13:05:54]
WITH t AS
(
SELECT 1 id, '20140701' dt, '09' stm, '11' etm
UNION ALL SELECT 2, '20140701', '09', '10'
UNION ALL SELECT 3, '20140701', '10', '12'
UNION ALL SELECT 4, '20140702', '09', '12'
)
SELECT dt
     , COUNT(CASE WHEN '09' BETWEEN stm AND etm THEN 1 END) "09"
     , COUNT(CASE WHEN '10' BETWEEN stm AND etm THEN 1 END) "10"
     , COUNT(CASE WHEN '11' BETWEEN stm AND etm THEN 1 END) "11"
     , COUNT(CASE WHEN '12' BETWEEN stm AND etm THEN 1 END) "12"
  FROM t
 GROUP BY dt
;

 


by 라슈 [2014.07.21 14:26:02]

역시 마농님~~

공부가 되었습니다.

감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입