0

誰かが私が書き込もうとしているSQLステートメントを手伝ってもらえますか?私はSSRSr1を使用しています(sqlまたはssrsソリューションのいずれかで問題ありません)

どうすればよいですか:

  • 月と年で分割されたカウントメジャーを表示
  • それらの月ごとに、過去の累積12か月を数えたい

例えば

2012 jan: counts feb 2011 - jan 2012
2012 feb: counts mar 2011 - feb 2012
2012 mar: counts apr 2011 - mar 2012

私はこのコードを開始しましたが、正しくありませんが、私が何を達成しようとしているのかがわかります(この問題は、日付から月と年を計算する必要があるということです)

select 
    count(a.measure) count
    ,month(a.StartDate)
    ,year(a.StartDate)
from
    a
where 
    a.StartDate >=  DATEADD(mm,DATEDIFF(mm,0,@datepromt)-12,0) as startdateYrAgo --1st month 1 year ago 01/01/2012 
    and a.StartDate <= DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@datepromt)+1,0)) as startdateEOM --last day of month 31/01/2013
group by 
    month(a.StartDate)
    ,year(a.StartDate)
4

1 に答える 1

0

ここにクエリのアイデアがあります。次のようになっている必要があります。

SELECT 
 periods.year
,periods.month
,measures.cnt
FROM (
    SELECT DISTINCT
      year = YEAR(StartDate)
    , month = MONTH(StartDate)
    , month_running = DATEDIFF(mm, 0, StartDate) 
    FROM a
    GROUP BY YEAR(StartDate), MONTH(StartDate), DATEDIFF(mm, 0, StartDate) 
) periods
JOIN (
    SELECT month_running = DATEDIFF(mm, 0, StartDate), cnt = COUNT(measure) 
    FROM a
    GROUP BY DATEDIFF(mm, 0, StartDate) 
) measures
ON measures.month_running BETWEEN periods.month_running - 12 AND periods.month_running - 1
于 2013-01-22T21:45:25.097 に答える