SQL Serverで集計表を出力
日付をDATETIME型で管理している場合、CONVERT関数、DATEPART関数を使って、日、週、月、年別の集計結果を出力することができます。
週別の集計は日曜はじまりなので注意する
集計方法
日次集計
-- 日次(CONVERT) SELECT CONVERT(VARCHAR, 日付, 111) , COUNT(*) FROM テーブル名 GROUP BY CONVERT(VARCHAR, 日付, 111) -- 日次(DATEPART) SELECT DATEPART(YEAR, 日付) , DATEPART(MONTH, 日付) , DATEPART(DAY, 日付) , COUNT(*) FROM テーブル名 GROUP BY DATEPART(YEAR, 日付) , DATEPART(MONTH, 日付) , DATEPART(DAY, 日付)
週次集計
-- 週次(DATEPART) ※日曜はじまり SELECT DATEPART(WEEK, 日付) , COUNT(*) FROM テーブル名 GROUP BY DATEPART(WEEK, 日付)
月次集計
-- 月次(CONVERT) SELECT SUBSTRING(CONVERT(VARCHAR, 日付, 111), 1, 7) , COUNT(*) FROM テーブル名 GROUP BY SUBSTRING(CONVERT(VARCHAR, 日付, 111), 1, 7) -- 月次(DATEPART) SELECT DATEPART(YEAR, 日付) , DATEPART(MONTH, 日付) , COUNT(*) FROM テーブル名 GROUP BY DATEPART(YEAR, 日付) , DATEPART(MONTH, 日付)
年次集計
-- 年次(CONVERT) SELECT SUBSTRING(CONVERT(VARCHAR, 日付, 111), 1, 4) , COUNT(*) FROM テーブル名 GROUP BY SUBSTRING(CONVERT(VARCHAR, 日付, 111), 1, 4) -- 年次(DATEPART) SELECT DATEPART(YEAR, 日付) , COUNT(*) FROM テーブル名 GROUP BY DATEPART(YEAR, 日付)