2016-04-06 14 views
0

私は毎月受け取ったメールの総数を計算する関数を書いています。しかし、Group By DATEADD関数を使用すると、非カウント値のみが得られます。 0カウント内のすべての値を取得する必要があります。DATEADDで希望の結果をグループ化する方法

MonthStartDate、DATEADD BY tblMessageReceived 群からCOUNT(ReceivedDateTime)MonthlyTotal AS(0ヶ月、DATEDIFF(月、0、ReceivedDateTime))AS SELECT(MAX(ReceivedMonthofYear)+」「+ MAX(ReceivedYear))

これは実際に私もまた、0カウント値と月とのことで与えられた範囲内のすべての値の出力を取得したいクエリ Out put of the query

を得ました。

ありがとうございます!

+0

でMonthColとYearColを置き換え、これを試してみてください。 – sagi

+0

@sagiすべてのDATEテーブルを使ってそれを行う方法。 tblMessageReceivedを指定してDATEテーブルLeft OuterJOINを使用している場合。 –

+0

日付表があるときは、それを選択してクエリへの結合を残し、ISNULLを使用してNULLを0と置き換えます – sagi

答えて

1
SELECT td.monthCol+' '+td.yearCol AS MonthStartDate, 
     isnull(MonthlyTotal,0) AS MonthlyTotal 
FROM tblDates td 
LEFT OUTER JOIN (SELECT (MAX(ReceivedMonthofYear)+' '+MAX(ReceivedYear)) AS MonthStartDate, 
         COUNT(ReceivedDateTime) AS MonthlyTotal 
       FROM tblMessageReceived 
       GROUP BY DATEADD(month, DATEDIFF(month, 0, ReceivedDateTime), 0)) tm 
ON (td.monthCol+' '+td.yearCol = tm.MonthStartDate) 

あなたはすべての利用可能な日付を含む `DATE`テーブルを必要とするあなたの日付テーブルの列名

+0

あなたの助けになりました –

関連する問題