본문 바로가기

개발개발/db

[oracle/mysql/mssql] 날짜 목록 구하기 (조인해서 응용가능)

프로젝트 진행 중 주간 통계 데이터를 구해야 하는 경우가 있는데

중간중간 비는 날짜가 있어서 없는 날짜를 어떻게 가져올지 막막했다.

질문찬스를 사용해서 아래와 같은 쿼리를 또 새롭게 알았다.


아래 쿼리를 응용해서 원하는 데이터와 조인해서 날짜별 합계나 평균 등을 구할 수 있었다.


-- 입력날짜로 부터 100일 전까지 계산

select '2018-03-21' - INTERVAL (a.a + (10 * b.a)) DAY as Date

from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a

cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b


-- 응용1. 7일전까지 구하기

select '2018-03-21' - INTERVAL (a.a) DAY as Date

from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6) as a


통계는 어렵다.. @.@