こんにちは私は3列のSQLServerデータベースを持っており、Activity[start_date(datetime),end_date(datetime),title(string)]
1年間カウントしたいのですが、毎月start_dateがあるアクティビティの数です。つまり、月内のアクティビティをカウントする12個の値(12か月)を返したいということです。 、 ありがとう。
質問する
302 次
2 に答える
0
にインデックスがある場合、start_date
および/またはその月にアクティビティがなかった場合でも結果に月を含める必要がある場合は、次のように検討できます。
DECLARE @year INT;
SET @year = 2012;
;WITH n AS
(
SELECT TOP (12) m = DATEADD(MONTH, ROW_NUMBER() OVER
(ORDER BY name)-1, DATEADD(YEAR, @year-1900, 0))
FROM sys.all_objects ORDER BY name
)
SELECT [Month] = n.m, ActivityCount = COUNT(t.title)
FROM n
LEFT OUTER JOIN dbo.unspecified_table_name AS t
ON t.start_date >= n.m
AND t.start_date < DATEADD(MONTH, 1, n.m)
GROUP BY n.m
ORDER BY [Month];
(特定の月にアクティビティがゼロのときに行が必要ない場合は、に変更LEFT OUTER
してINNER
ください。)
于 2012-07-12T19:39:41.007 に答える
0
select month(start_date) as Month, count(*) as Count
from Activity
where year(start_date) = 2011
group by month(start_date)
order by month(start_date)
于 2012-07-12T19:29:00.957 に答える