예를들어 대리점에서 판매가 일어나면 날짜(시간) 와 해당 대리점 판매 수량이 기록되는 테이블이
있다고 가정 하고 다음과 같이 구성되어 있습니다.
판매일 / 대리점 /수량
2014-09-01 / 대리점A / 2
2014-09-01 / 대리점A / 1
2014-09-02 / 대리점B / 10
2014-09-03 / 대리점B / 2
2014-09-03 / 대리점C / 1
총 대리점수는 3개(대리점A,대리점B,대리점C) 가 있고 특정일에 판매가 발생되지 않는 대리점도 있을수 있습니다.
9월1일에서 9월3일까지의 일별 판매 집계를 가져 올때
2014-09-01 / 대리점A / 3
2014-09-01 / 대리점B / 0
2014-09-01 / 대리점C / 0
2014-09-02 / 대리점A / 0
2014-09-02 / 대리점B / 10
2014-09-02 / 대리점C / 0
2014-09-03 / 대리점A / 0
2014-09-03 / 대리점B / 2
2014-09-03 / 대리점C / 1
다음과 같이 해당 날짜에 판매가 없는 경우 자동으로 0 으로 값을 채워서 가져 올수 있는 간단한 방법이 있을 까요?
Comment 5
-
버즈베잇
2014.10.29 01:23
답변 감사 합니다..
단순 날짜라면 달력테이블 맹글고 LEFT 조인 하면 방법도 해봤고
판매가 일어나지 않는 대리점의 경우 집계에서 빠지기 때문에 대리점*날짜 를 크로스 조인해서
모든 대리점과 모든 날짜가 나온게 한후 통계 테이블과 LEFT 조인도 해봤는데 뭔가 비효율적인거 같아서
좀더 심플한 방법이 없나 문의 해 보았습니다..
-
항해자™
2014.10.29 09:14
대리점 마스터 테이블과 원하는 기간의 테이블과 cross join 한 날짜와 대리점 코드만 있는 cte와 left join 으로 하는게 최선일 듯 합니다,,
-
항해자™
2014.10.29 09:19
그게 아니면 어플에서 처리해야죠,,
데이터는 루프문으로 처리할테니 사이사이 없는 값을 0 으로 찍어주셔야죠ㅎㅎㅎ -
버즈베잇
2014.10.29 10:00
답변 감사 드립니다.
결국 다른 방법은 없는거네요
날짜관련 문제 나올때마다 항상 답글 다는데
한 40년치 날짜 가지고 있는 날짜 테이블 만들고
이 테이블과 outer join을 하세요.