0

使用 MSSQL 2005。

我有一个统计统计数据的表格 - 数据每天存储。

我想做的-是显示一个数据表-其中信息按月分组。

样本数据:

 id   |   clickDate  |  clicksEmail
-------------------------------------
 1        10/11/2013       2
 2        09/11/2013       1
 3        05/11/2013       4
 4        30/10/2013       4

这就是我现在所拥有的:

SELECT  datepart(m,clickDate), sum([clicksEmail]) TotalWeb 
FROM tblCompanyClicks  A WHERE companyID = 1129 
GROUP BY datepart(m,clickDate)
ORDER BY datepart(m,clickDate) DESC 

效果很好。只是我还想显示年份-而不仅仅是月份。但是一旦我将年份添加到 SQL 中,它就会破坏聚合函数。我尝试使用子选择,但这似乎也不起作用。

这就是我想要显示的内容:

month & year    |     Summary
-------------------------------
  Nov 2013      |      7
  Oct 2013      |      4

协助表示赞赏!

谢谢!

4

2 回答 2

1
SELECT   DATENAME(month,clickDate) + ' ' + 
             CONVERT(VARCHAR(4),DATEPART(year,clickDate)), 
         SUM([clicksEmail]) TotalWeb 
FROM     tblCompanyClicks  A 
WHERE    companyID = 1129 
GROUP BY DATENAME(month,clickDate) + ' ' +  
             CONVERT(VARCHAR(4),DATEPART(year,clickDate))
ORDER BY DATENAME(month,clickDate) + ' ' +  
             CONVERT(VARCHAR(4),DATEPART(year,clickDate)) DESC 
于 2013-11-11T07:57:12.633 回答
1

尝试分组:

SELECT  CONVERT(VARCHAR(3), clickDate, 0) + ' ' + DATENAME(YEAR, clickDate), 
        sum([clicksEmail]) TotalWeb 
FROM tblCompanyClicks  A WHERE companyID = 1129 
GROUP BY CONVERT(VARCHAR(3), clickDate, 0) + ' ' + DATENAME(YEAR, clickDate)
ORDER BY CONVERT(VARCHAR(3), clickDate, 0) + ' ' + DATENAME(YEAR, clickDate) DESC 

另一种方法是:

SELECT  SUBSTRING(CONVERT(VARCHAR(20), clickDate,106),3,20), 
        sum([clicksEmail]) TotalWeb 
FROM tblCompanyClicks  A WHERE companyID = 1129 
GROUP BY SUBSTRING(CONVERT(VARCHAR(20), clickDate,106),3,20)
ORDER BY SUBSTRING(CONVERT(VARCHAR(20), clickDate,106),3,20) DESC 

对于单独的月份和年份列,您可以使用 DATEPART() 函数,如下所示:

SELECT  DATEPART(YEAR, clickDate) [Year],
        DATEPART(MONTH, clickDate) [Month], 
        sum([clicksEmail]) TotalWeb 
FROM tblCompanyClicks  A WHERE companyID = 1129 
GROUP BY DATEPART(YEAR, clickDate),
         DATEPART(MONTH, clickDate)
ORDER BY DATEPART(YEAR, clickDate) DESC,
         DATEPART(MONTH, clickDate) DESC
于 2013-11-11T08:01:32.263 回答