2013-10-30 1 views
0

이것은 Im이 사용하는 샘플 데이터입니다. 이 데이터를 바탕으로 롤링 분기 보고서를 만들어야합니다. 다시 말해 월별 보고서는 3 개월 전으로보고 있습니다. 문제는 평균과 합계를보고해야한다는 것입니다. 아래는 출력 Im의 형식입니다.롤링 쿼터의 SQL보고

이것을 구현하는 가장 좋은 방법은 무엇인지 알아 내려고합니다. 분기별로 계산해야합니까, 아니면 월 단위로 계산해야합니까?

현재 프로세스가 Excel에서 수행 중이므로 실제로 관계가없는 테이블로 작업하고 있습니다.

enter image description here

enter image description here

답변

0

브 루트 포스 용액

WITH MonthData AS (
    SELECT (YEAR(Date) - 2000) * 12 + MONTH(Date) AS MonthNumber 
      ,Count1 
      ,Count2 
    FROM Table 
) 
,QuarterData AS (
    SELECT MAX(MonthNumber) AS MonthNumber 
      ,SUM(Count1)/COUNT(1) AS MeanCount1 
      ,SUM(Count2)/COUNT(1) AS MeanCount2 
      ,SUM(Count1) AS SumCount1 
      ,SUM(Count2) AS SumCount2 
    FROM MonthData 
    GROUP BY MonthNumber/3 
    UNION ALL 
    SELECT MAX(MonthNumber) 
      ,SUM(Count1)/COUNT(1) 
      ,SUM(Count2)/COUNT(1) 
      ,SUM(Count1) 
      ,SUM(Count2) 
    FROM MonthData 
    GROUP BY (MonthNumber + 1)/3 
    UNION ALL 
    SELECT MAX(MonthNumber) 
      ,SUM(Count1)/COUNT(1) 
      ,SUM(Count2)/COUNT(1) 
      ,SUM(Count1) 
      ,SUM(Count2) 
    FROM MonthData 
    GROUP BY (MonthNumber + 2)/3 
) 
SELECT DATEADD(month, MonthNumber, '20000101') AS Period 
     ,MeanCount1 
     ,MeanCount2 
     ,SumCount1 
     ,SumCount2 
FROM QuarterData