0

こんにちは私は3列のSQLServerデータベースを持っており、Activity[start_date(datetime),end_date(datetime),title(string)] 1年間カウントしたいのですが、毎月start_dateがあるアクティビティの数です。つまり、月内のアクティビティをカウントする12個の値(12か月)を返したいということです。 、 ありがとう。

4

2 に答える 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 に答える