私はこれを使用します:
SELECT Closing_Date = DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0),
Category,
COUNT(Status) TotalCount
FROM MyTable
WHERE Closing_Date >= '2012-02-01'
AND Closing_Date <= '2012-12-31'
AND Defect_Status1 IS NOT NULL
GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, Closing_Date), 0), Category;
これは毎月1日にグループ化されるため、
`DATEADD(MONTH, DATEDIFF(MONTH, 0, '20130128'), 0)`
'20130101'
を提供します 。日付を日付として保持するので、私は一般的にこの方法を好みます。
または、次のようなものを使用することもできます:
SELECT Closing_Year = DATEPART(YEAR, Closing_Date),
Closing_Month = DATEPART(MONTH, Closing_Date),
Category,
COUNT(Status) TotalCount
FROM MyTable
WHERE Closing_Date >= '2012-02-01'
AND Closing_Date <= '2012-12-31'
AND Defect_Status1 IS NOT NULL
GROUP BY DATEPART(YEAR, Closing_Date), DATEPART(MONTH, Closing_Date), Category;
それは本当にあなたの望む出力が何であるかに依存します。 (この例では、年を閉じる必要はありませんが、日付範囲が年の境界を超える場合は、そうなる可能性があります)。