获取按月和年分组的计数

kac*_*apy 5 sql-server-2008 sql-server

我正在尝试报告电子邮件消息系统中的数据,并希望通过month/year.

SELECT YEAR(crdate) AS y,
       MONTH(crdate) AS m,
       COUNT(*) AS tally
FROM   MESSAGE
WHERE  YEAR(crdate) = 2012
       AND SUBJECT <> 'Welcome' --exclude default messages
GROUP BY
       YEAR(crdate),
       MONTH(crdate)
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的,但它的限制在于我需要手动更改年份。这可以升级为以这种month/year格式输出表格中的所有日期吗?

删除年份会将可能数年的所有月份聚集在一起并扭曲数据。我希望从那个特定的month/year.

Tho*_*ger 7

将其包装在存储过程中,然后:

CREATE PROCEDURE GetYearCounts
    @year INT
AS
    SELECT YEAR(crdate) AS y,
           MONTH(crdate) AS m,
           COUNT(*) AS tally
    FROM   MESSAGE
    WHERE  YEAR(crdate) = @year
           AND SUBJECT <> 'Welcome' --exclude default messages
    GROUP BY
           YEAR(crdate),
           MONTH(crdate);
GO
Run Code Online (Sandbox Code Playgroud)

这将允许您指定要从调用中获取数据的年份。IE

EXEC GetYearCounts @year = 2012;
GO
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的,但它的限制在于我需要手动更改年份。

根据您的要求,无法自动执行此操作。